有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse:许多类文件

我想知道为什么我的程序在“bin”文件夹中有30个类文件。java程序

它们的名称如下:

Testworks$1.class
Testworks$2.class
Testworks$3.class
Testworks$4.class

...

还有一个Testworks.class

当我生成程序时。jar文件所有30Testworks$X.class都被复制到内部

我真的需要它们吗?我怎样才能排除它们


共 (3) 个答案

  1. # 1 楼答案

    这取决于你写的代码。如果您有以下类似的内容,它将生成这些$类文件

    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());

  2. # 2 楼答案

    这些类是匿名的内部类。如果您使用过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..等)

  3. # 3 楼答案

    您确实需要它们,它们是代码中的匿名类。编译器将它们编译成这个命名方案(Outer$x.class