相关疑难解决方法(0)

在创建对象时声明方法

为什么第一种方式是正确的,但第二种方式不是?


第一种方式:

new Object() {
    public void a() {
        /*code*/
    }
}.a();
Run Code Online (Sandbox Code Playgroud)

第二种方式:

Object object = new Object() {
    public void a() {
        /*code*/
    }
};

object.a();
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到更多相关信息?

java methods anonymous-inner-class object anonymous-class

29
推荐指数
2
解决办法
1103
查看次数

我可以使用一些语法访问匿名内部类中的新方法吗?

是否有任何Java语法来访问外部类中匿名内部类中定义的新方法?我知道可以有各种变通方法,但我想知道是否存在特殊语法?

例如

class Outer {

    ActionListener listener = new ActionListener() {

        @Override
        void actionPerformed(ActionEvent e) { 
             // do something
        }

        // method is public so can be accessible
        public void MyGloriousMethod() {
             // viva!
        }

    };

    public void Caller() {
         listener.MyGloriousMethod(); // does not work!
    }


}
Run Code Online (Sandbox Code Playgroud)

我自己的解决方案

我只是把所有的方法和成员都移到了外层.

java syntax member inner-classes

15
推荐指数
3
解决办法
8877
查看次数