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(); ```

Original source