如果我有一个内部类,像这样:
public class Test { public class Inner { // code ... } public static void main(String[] args) { // code ... } }
当我编译它时,我希望它应该生成两个文件:
Test.class Test$Inner.class
那么为什么我有时会看到SomeClass $ 1.class这样的类文件,即使SomeClass不包含一个名为"1"的内部类?
SomeClass $ 1.class表示匿名内部类
哈瓦一看这里的匿名内部课
SomeClass$1.class
如果你的类包含私有内部类(不是匿名的),你也会得到类似的东西,但你在父类的某个点实例化它.
例如:
public class Person { private class Brain{ void ponderLife() { System.out.println("The meaning of life is..."); } } Person() { Brain b = new Brain(); b.ponderLife(); } }
这会产生:
Person.class Person$Brain.class Person$1.class
我个人认为这比典型的匿名类更容易阅读,特别是在实现一个简单的接口或只用于传递到另一个本地对象的抽象类时.