一个Java文件,但有两个类

时间:2013-03-27 22:37:50

标签: java compilation

我的项目中有几个课程。编译后,我找到两个java-Files到每个类:name.class和name $ .class。可能是什么原因?我认为这些课没什么特别的。

问候

4 个答案:

答案 0 :(得分:7)

这是一个匿名的内部类,例如:

new Runnable() { ... }

修改:评论中的一些有效点:

  • enum类型也被编译为单独的类文件(因为它们实际上是类)
  • 匿名内部类按顺序编号(MyClass$1.classMyClass$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