[英]Eclipse: Many Class Files
我想知道为什么我的Program.java程序的“ bin”文件夹中有30个ClassFiles。
它们的名称如下:
Testworks$1.class
Testworks$2.class
Testworks$3.class
Testworks$4.class
...
并且有一个Testworks.class
当我生成Program.jar文件时,所有30个Testworks$X.class
都将复制到其中。
我真的需要它们吗?如何排除它们?
这些类是匿名内部类。 如果您使用过GUI编程,则可能已经注意到它们。 当您为事件创建侦听器时,您可以执行以下操作:
Button okBtn = new Button("Ok");
okBtn.addActionListener(new ActionListener(){//this is an anonymous inner class
public void actionPerformed(ActionEvent ae){
//your code here
}
...
...
});
该内部类没有显式名称,因此编译器使用约定OuterClass $ x.class对其进行命名。 x替换为内部类的编号(例如1、2..etc)
您确实需要它们,它们是您的代码中包含的匿名类。 编译器将它们编译为该命名方案( Outer$x.class
)。
这取决于您编写的代码。 如果您有类似下面的内容,它将生成这些$
类文件。
List<Person> persons = ...
Collections.sort(persons, new Comparator<Person>() {
@Override
public int compareTo(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
});
如果由于某种原因不想看到$
文件,只需在一个单独的类中声明匿名比较器。
public class PersonComparator implements Comparator<Person> {
@Override
public int compareTo(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
}
并将其用作: Collections.sort(persons, new PersonComparator());
内部类对此进行编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.