繁体   English   中英

Eclipse:许多类文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM