我在Eclipse中运行了一个Java项目,其主要可执行文件名为GreatPlaces.java
。在我的/bin
文件夹中,我假设只有一个名为GreatPlaces.class
的CLASS文件。但是,我有几个,除了GreatPlaces.class
我还有GreatPlaces$1.class
,GreatPlaces$2.class
... GreatPlaces$22.class
。谁能解释一下这个?感谢。
答案 0 :(得分:4)
美元符号由编译器用于内部类。
$
符号表示内部类。如果它在number
之后有$
,那么它就是一个匿名的内部类。如果它在name
之后有$
,那么它只是一个内部类。
所以在你的情况下,这些代表了annonymouse内部类
答案 1 :(得分:4)
如果您的类中存在任何内部类,则将编译内部类,并且类文件将为ClassName$InnerClassName
。如果有匿名内部类,它将显示为数字。
示例:强>
public class TestInnerOuterClass {
class TestInnerChild{
}
Serializable annoymousTest = new Serializable() {
};
}
将生成的类是:
答案 2 :(得分:2)
这些类文件对应于您在程序中使用的匿名内部类。
这是一个事件处理程序的示例,它将编译为自己的.class文件:
button.addActionLister(new ActionListener() {
public void actionPerformed(ActionEvent e) { .... }
});