在编译井字游戏的代码以及使用 swing 和 awt 包在 java 中运行一些代码时。我得到了一个附加的类文件生成,与 ClassName.class 文件平行。可能是什么原因?它是否由于 ActionListeners 的使用而发生。通常在执行涉及结构的 C 程序时会生成此类 .bak 文件的创建。
这两种情况需要支持。
在编译井字游戏的代码以及使用 swing 和 awt 包在 java 中运行一些代码时。我得到了一个附加的类文件生成,与 ClassName.class 文件平行。可能是什么原因?它是否由于 ActionListeners 的使用而发生。通常在执行涉及结构的 C 程序时会生成此类 .bak 文件的创建。
这两种情况需要支持。
名称中包含的类文件$
不过是您可能在顶级类中使用过的inner classes
or 。anonymous inner classes
例如,如果您有这样的类声明:-
public class A {
public class B {
}
}
然后您将生成两个类文件: -A.class
和A$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.class
和Foo$1.class
.
因此,如果您将ActionListener
其用作匿名内部类,那么您也会$
以您的class file
名义获得 that anonymous inner class
。
是的,Java 编译器会将Bar
“主”Foo
类的内部类编译为 Foo$Bar...
那是:
class Foo {
class Bar {
}
}
会创造Foo.class
和Foo$Bar.class
你为什么要问?我的意思是,真正的问题是什么?
干杯。基思。