一个Java文件,但有两个类
我的项目中有一些课程。 编译之后,我找到两个java-Files到每个类:name.class和name $ .class。 可能是什么原因? 我认为课程没什么特别之处。
问候
它是一个匿名的内部类,例如:
new Runnable() { ... }
编辑:评论中的一些有效点:
-
enum
类型也被编译为单独的类文件(因为它们实际上是类) - 匿名内部类按顺序编号(
MyClass$1.class
,MyClass$2.class
等) - unanymous内部类被命名(例如,
MyClass$InnerNamedClass.class
)
您的公共类中有一个内部类(匿名或命名)。 这种行为很正常; 无论源文件中定义了多少个类,Java编译器都会为每个类生成一个.class文件。
Java compile为.java文件中定义的每个类创建一个.class文件。 你应该有一个像这样的匿名内部类:
button.addListener(new PressListener() { public void onPressed(Event event) { System.out.print("test"); } });
Java中的内部类被编译为Class$InnerClass
。
如果已命名类,则使用类的名称。 如果是匿名课程,即你有类似的东西:
final ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } };
然后使用数字,因此这将是Class$1
。