匿名类-什么时候创建的?

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()创建两个不同的类吗?

dav*_*xxx 5

不,不会。在编译时会为匿名类创建一个类(以形式OuterClass$1.class),这就是由类加载器加载的单个类。
然后在运行时,每次getAnonymousMyInterface()调用都会创建一个MyInterface 匿名类的不同实例,因为new操作员会在此之后声明一个新的类实例。