vik*_*mun -2 java anonymous-class
每次调用其封闭方法时,是否会创建一个匿名类(未实例化,但实际上已定义/加载了该类)?还是重用了它们?例如:
public MyInterface getAnonymousMyInterface() {
return new MyInterface(){
public void doStuff(){
System.out.println("did stuff");
}
}
}
Run Code Online (Sandbox Code Playgroud)
调用会getAnonymousMyInterface()创建两个不同的类吗?
不,不会。在编译时会为匿名类创建一个类(以形式OuterClass$1.class),这就是由类加载器加载的单个类。
然后在运行时,每次getAnonymousMyInterface()调用都会创建一个MyInterface 匿名类的不同实例,因为new操作员会在此之后声明一个新的类实例。