简体   繁体   中英

how to invoke method of annoymous class from the main method of the outer class

I'm new to Java and is trying to learn the concept of anonymous class. Could someone please tell me how I can invoke the 'awesomeMethod' from the main method of the LocallClassExample?

public class LocalClassExample {

    interface Awesome {

        public void awesomeMethod();
    }

    class AwesomeClass {

        public int finalInt= 10;

        Awesome a1 = new Awesome() {

            @Override
            public void awesomeMethod() {
                System.out.println(finalInt);
            }
        };
    }

    public static void main(String[] args) {        

    }
}

Consider this:

new AwesomeClass().a1.awesomeMethod();

will invoke the method awesomeMethod() on the member variable a1 (which is something Awesome ) of the newly created instance of AwesomeClass .

It will get more tricky once your main is outside of your AwesomeClass - and more so once it's outside of the package. In these cases you'd have to provide a getter like

public Awesome getAwesome() { 
  return a1; 
}

Which would when invoked still execute the method as defined in your anonymous class.

Try to use this to create inner class object as:

  public static void main(String[] args) {        
    LocalClassExample.AwesomeClass oi = new LocalClassExample().new AwesomeClass();
  oi.awesomeMethod();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM