带有$符号的Java类文件

时间:2014-04-03 02:49:30

标签: java class

我有一个名为StreamGo的课程。它还有4个同名文件,如:StreamGo $ 1,StreamGo $ 2等。所有这些类文件都有不同的代码集。我如何合并它们?为什么这些类文件是用$ 1和$ 2等创建的?

请帮忙。

3 个答案:

答案 0 :(得分:2)

StreamGo.java中定义的匿名内部类自动生成这些类文件。例如,如果你有这样的东西:

final Runnable runnable = new Runnable() {
    public void run() {
        // ...
    }
};

然后您将StreamGo$1.class用于匿名实施您在此处定义的Runnable

命名嵌套类会做很多相同的事情,除非你得到他们的名字而不是数字部分。

答案 1 :(得分:1)

这些是您在类中创建的匿名类的编译器生成的类。

由于Java字节码需要为每个类单独的.class文件,因此无法合并它们。

您可能希望将所有.class个文件放入.jar

答案 2 :(得分:1)

如果java文件中有内部类,则编译器将创建一个名为Java文件的类文件以及$。您无法组合这些类文件。但是如果要复制这些类文件,请确保复制所有以$符号开头的类文件!否则它将无法正常工作