0

在编译井字游戏的代码以及使用 swing 和 awt 包在 java 中运行一些代码时。我得到了一个附加的类文件生成,与 ClassName.class 文件平行。可能是什么原因?它是否由于 ActionListeners 的使用而发生。通常在执行涉及结构的 C 程序时会生成此类 .bak 文件的创建。

这两种情况需要支持。

4

2 回答 2

5

名称中包含的类文件$不过是您可能在顶级类中使用过的inner classesor 。anonymous inner classes

例如,如果您有这样的类声明:-

public class A {
    public class B {
    }
}

然后您将生成两个类文件: -A.classA$B.class. class B这显示了里面的遏制class A

如果ActionListener发生这种情况,请在您的代码中。

更新: -

如果您正在使用anonymous inner class,那么您还将获得其中的类名$:-

interface A {
   public void show();
}

public class Foo {
    public static void main(String[] a) {

        new A() {
            @Override
            public void show() {
                System.out.println("Hello");
            }
        }.show();
    }
}

然后生成的类文件将是: -Foo.classFoo$1.class.

因此,如果您将ActionListener其用作匿名内部类,那么您也会$以您的class file名义获得 that anonymous inner class

于 2012-11-03T07:53:36.940 回答
1

是的,Java 编译器会将Bar“主”Foo类的内部类编译为 Foo$Bar...

那是:

class Foo {
   class Bar {
   }
}

会创造Foo.classFoo$Bar.class

你为什么要问?我的意思是,真正的问题是什么?

干杯。基思。

于 2012-11-03T07:56:19.133 回答