Java 在匿名(内部)类中调用方法

Java 在匿名(内部)类中调用方法,java,class,interface,inner-classes,anonymous-class,Java,Class,Interface,Inner Classes,Anonymous Class,我想创建一个主类并调用methodExample。我该怎么做?由于您的类实现了Example接口,并且该接口上存在void methodExample(),所以您只需通过接口引用对象,并调用其方法: interface Example{ void methodExample(); } class Y{ void do(Example x) { } } class X{ void methodX() { Y y = new Y(); y.do(new E

我想创建一个主类并调用
methodExample
。我该怎么做?

由于您的类实现了
Example
接口,并且该接口上存在
void methodExample()
,所以您只需通过接口引用对象,并调用其方法:

 interface Example{
   void methodExample();
 }
 class Y{
  void do(Example x) { }
}

class X{
   void methodX() {
     Y y = new Y();
     y.do(new Example() {
       public void methodExample() {
         System.out.println("methodExample");
       } 
     });
   } 
 } 

上述方法是有效的,因为实现
Example
的所有类(包括所有匿名实现)的对象在编译时都可以实现
methodExample()
如果您没有访问类
Y
的权限,那么唯一的方法就是首先重写
doIt()
本身,使用匿名内部类,然后调用重写的方法,例如:

class Y{
    public void doIt(Example x) {
        x.methodExample();
    }
}
要称之为此,您只需执行以下操作:

class X {
    void methodX() {
        Y y = new Y() {
            @Override
            void doIt(Example x) {
                x.methodExample();
            }
        };
        y.doIt(new Example() {
            public void methodExample() {
                System.out.println("methodExample");
            }
        });
    }
}

不相关但值得注意的是:
do
不是有效的标识符,因为它也是一个关键字。
public static void main(String[] args) throws Exception {
    X x = new X();
    x.methodX();
}