为什么第一种方式是正确的,但第二种方式不是?
第一种方式:
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语法来访问外部类中匿名内部类中定义的新方法?我知道可以有各种变通方法,但我想知道是否存在特殊语法?
例如
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)
我自己的解决方案
我只是把所有的方法和成员都移到了外层.