我有一个在 Eclipse 中运行的 Java 项目,其主要可执行文件名为GreatPlaces.java
. 在我的/bin
文件夹中,我假设只有一个名为GreatPlaces.class
. 但是,我有几个,除了GreatPlaces.class
我也有GreatPlaces$1.class
,GreatPlaces$2.class
...。GreatPlaces$22.class
谁能给我解释一下?谢谢。
问问题
1744 次
3 回答
4
编译器将美元符号用于内部类。
$
符号代表内部类。如果它有一个number
after$
那么它是一个匿名的内部类。如果它有一个name
after$
那么它只是一个内部类。
所以在你的情况下,这些代表匿名内部类
于 2013-06-02T17:32:02.430 回答
4
如果您的类中存在任何内部类,则将对其进行编译,并且类文件将是ClassName$InnerClassName
. 如果是匿名内部类,它将显示为数字。
例子:
public class TestInnerOuterClass {
class TestInnerChild{
}
Serializable annoymousTest = new Serializable() {
};
}
将生成的类是:
- TestInnerOuterClass.class
- TestInnerOuterClass$TestInnerChild.class
- TestInnerOuterCasss$1.class
于 2013-06-02T17:32:08.913 回答
2
这些类文件对应于您在程序中使用的匿名内部类。
这是一个事件处理程序的示例,它将被编译成它自己的 .class 文件:
button.addActionLister(new ActionListener() {
public void actionPerformed(ActionEvent e) { .... }
});
于 2013-06-02T17:34:04.157 回答