为类生成多个.class文件?

Ari*_*iod 15 java class javac

出于好奇,为什么有时在编译后为类生成多个Java .class文件?例如,我的应用程序有六个类.对于一个类,总共生成了10个.class文件,从MyClass#1开始到MyClass#10.

Sim*_*son 27

这些用于内部类静态嵌套类.带数字的是匿名内部类.

例如:


class Foo {
   class Bar { }
   static class Baz { }
   void run() {
      Helper t = new Helper() {
         int helpMethod() {
            return 2;
         }
      };
    }
}
Run Code Online (Sandbox Code Playgroud)

这将产生类文件Foo.class,Foo$Bar.class,Foo$Baz.classFoo$1.class(用于实施Helper接口)


Pet*_*ler 5

如果,您可以从单个源文件中获得更多.class文件

  • 该类包含内部类或静态内部类.内部类可以嵌套.他们的名字是<outer class name>$<inner class name>.

  • 内部接口始终是静态的.

  • 匿名内部类(实际上是没有名称的普通内部类)

  • 主类之前和之后的包访问接口和类.您可以在单个Java源文件中拥有任意数量的包访问类和接口.通常只有类使用的小辅助对象才会被放入同一个文件中.