当前位置:  开发笔记 > 编程语言 > 正文

为什么带有内部类的Java代码会生成第三个SomeClass $ 1.class文件?

如何解决《为什么带有内部类的Java代码会生成第三个SomeClass$1.class文件?》经验,为你挑选了2个好方法。

如果我有一个内部类,像这样:

public class Test
{
    public class Inner
    {
        // code ...
    }

    public static void main(String[] args)
    {
        // code ...
    }
}

当我编译它时,我希望它应该生成两个文件:

Test.class
Test$Inner.class

那么为什么我有时会看到SomeClass $ 1.class这样的类文件,即使SomeClass不包含一个名为"1"的内部类?



1> hhafez..:

SomeClass $ 1.class表示匿名内部类

哈瓦一看这里的匿名内部课



2> waltwood..:

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

我个人认为这比典型的匿名类更容易阅读,特别是在实现一个简单的接口或只用于传递到另一个本地对象的抽象类时.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有