我是Java的新手,正在尝试学习匿名类的概念。有人可以请告诉我如何调用“真棒”方法'从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) {
}
}
答案 0 :(得分:2)
考虑一下:
new AwesomeClass().a1.awesomeMethod();
将在新创建的awesomeMethod()
实例的成员变量a1
(即Awesome
)上调用方法AwesomeClass
。
一旦你的主要在你的AwesomeClass
之外,它会变得更加棘手 - 而且一旦它超出包裹范围就会变得更加棘手。在这些情况下,你必须提供像
public Awesome getAwesome() {
return a1;
}
在调用时,仍会执行匿名类中定义的方法。
答案 1 :(得分:2)
尝试使用它来创建内部类对象:
public static void main(String[] args) {
LocalClassExample.AwesomeClass oi = new LocalClassExample().new AwesomeClass();
oi.awesomeMethod();
}