在用java编译Tic Tac Toe游戏程序时,会创建一个($附加名称)
编译Tic-Tac-Toe的代码时,以及使用swing和awt包在java中运行一些代码时。我得到一个$added类文件生成,与ClassName.class文件并行。原因可能是什么?它是否是由于ActionListeners的使用而发生的。通常,在执行涉及结构的C程序时,会生成此类.bak文件的创建在用java编译Tic Tac Toe游戏程序时,会创建一个($附加名称),java,Java,编译Tic-Tac-Toe的代码时,以及使用swing和awt包在java中运行一些代码时。我得到一个$added类文件生成,与ClassName.class文件并行。原因可能是什么?它是否是由于ActionListeners的使用而发生的。通常,在执行涉及结构的C程序时,会生成此类.bak文件的创建 这两种方案都需要支持。名称中包含$的类文件只不过是顶级类中可能使用的内部类或匿名内部类 例如,如果您有这样的类声明:- public class A { public class B {
这两种方案都需要支持。名称中包含
$
的类文件只不过是顶级类中可能使用的内部类
或匿名内部类
例如,如果您有这样的类声明:-
public class A {
public class B {
}
}
然后将生成两个类文件:-A.class
和A$B.class
。
这显示了class B
在class A
内部的包含
在ActionListener的情况下,这就是代码中正在发生的事情
更新:-
如果您使用的是匿名内部类
,那么您还将获得包含$
的类名:-
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
作为匿名内部类,那么您也会得到$
,在您的类文件中
该匿名内部类的名称
名称中包含$
的类文件只不过是您可能在顶级类中使用的内部类
或匿名内部类
例如,如果您有这样的类声明:-
public class A {
public class B {
}
}
然后将生成两个类文件:-A.class
和A$B.class
。
这显示了class B
在class A
内部的包含
在ActionListener的情况下,这就是代码中正在发生的事情
更新:-
如果您使用的是匿名内部类
,那么您还将获得包含$
的类名:-
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
作为匿名内部类,那么您也会在类文件中为该匿名内部类的名称中获得该$
,Java编译器会将“main”Foo
类的内部类Bar
编译为Foo$Bar
即:
class Foo {
class Bar {
}
}
将创建Foo.class
和Foo$Bar.class
你为什么这么问?我是说,真正的问题是什么
干杯。Keith.是的,Java编译器将“main”Foo
类的内部类编译为Foo$Bar
即:
class Foo {
class Bar {
}
}
将创建Foo.class
和Foo$Bar.class
你为什么这么问?我是说,真正的问题是什么
干杯。Keith。没有,但我写了我只是通过类的对象调用,我从来没有将其用作内部类,所以我得到了两个文件,TTTFrame.class和TTTFrame$。class@RandMate.. 在这种情况下,您可能使用的是匿名内部类
。请参阅更新的post.Nope,但我编写了我只是通过类的对象调用,我从未将其用作内部类,所以我得到了两个文件,TTTFrame.class和TTTFrame$。class@RandMate.. 在这种情况下,您可能使用的是匿名内部类
。看更新的帖子。作为一个初学者只是好奇。作为一个初学者,我只是好奇。