Joh*_*han 18 java compiler-construction
如果我有一个内部类,像这样:
public class Test
{
public class Inner
{
// code ...
}
public static void main(String[] args)
{
// code ...
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时,我希望它应该生成两个文件:
Test.class
Test$Inner.class
Run Code Online (Sandbox Code Playgroud)
那么为什么我有时会看到SomeClass $ 1.class这样的类文件,即使SomeClass不包含一个名为"1"的内部类?
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生:
Person.class
Person$Brain.class
Person$1.class
Run Code Online (Sandbox Code Playgroud)
我个人认为这比典型的匿名类更容易阅读,特别是在实现一个简单的接口或只用于传递到另一个本地对象的抽象类时.