Calling newly defined method from anonymous class
anonymous-class, anonymous-methods, java
Solution
Good question. Answer is No. You cannot directly call `date.someMethod();` Let's understand first what is this.
Date date = new Date() { ... };
Above is anonymous(have no name) sub-class which is extending Date class.
When you see the code like,
Runnable r = new Runnable() {
public void run() {
}
};
It means you have defined anonymous(have no name) class which is implementing(not extending) Runnable interface.
So when you call `date.someMethod()` it won't be able to call because `someMethod` is not defined in `superclass.` In above case superclass is `Date` class. It follows simple overriding rules.
But still if you want to call `someMethod` then following is the step. Fisrt way> With reference variable '`date`' `date.getClass().getMethod("someMethod").invoke(date);`
Second way> With newly created anonymous sub-class of Date class's object.
new Date()
{
public void someMethod() {
System.out.println("Hello");
}
}.someMethod(); //this should be without reference 'date'
Problem
I instantiated an object of an anonymous class to which I added a new method. ``` Date date = new Date() { public void someMethod() {} } ``` I am wondering if it is possible to call this method from outside somehow similar to: ``` date.someMethod(); ```