2012-03-12 60 views
1

我想知道爲什麼我的ProgramFiles程序的「bin」文件夾中有30個ClassFiles。Eclipse:許多Class文件

爲隨後它們被命名爲:

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

... 

,並具有一個Testworks.class

當我生成我Program.jar文件中的所有30 Testworks$X.class在裏面複製。

我真的需要他們嗎?我該如何排除他們?

回答

4

這些類是匿名內部類。如果你使用過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等)

2

你確實需要它們,它們是你的代碼中的匿名類。編譯器將它們編譯到這個命名方案中(Outer$x.class)。

0

將內部類編譯爲該類。

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