我的项目中有几个课程。编译后,我找到两个java-Files到每个类:name.class和name $ .class。可能是什么原因?我认为这些课没什么特别的。
问候
答案 0 :(得分:7)
这是一个匿名的内部类,例如:
new Runnable() { ... }
修改:评论中的一些有效点:
enum
类型也被编译为单独的类文件(因为它们实际上是类)MyClass$1.class
,MyClass$2.class
等。)MyClass$InnerNamedClass.class
)答案 1 :(得分:2)
您的公共类中有一个内部类(匿名或命名)。这种行为很正常;无论源文件中定义了多少个类,Java编译器都会为每个类生成一个.class文件。
答案 2 :(得分:0)
Java compile为.java文件中定义的每个类创建一个.class文件。你应该有一个像这样的匿名内部类:
button.addListener(new PressListener() {
public void onPressed(Event event) {
System.out.print("test");
}
});
答案 3 :(得分:0)
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
。