我是新來的java和試圖理解一些概念。這是我不明白的一段代碼。Java界面/比較器
public static Comparator<Fruit> FruitNameComparator = new Comparator<Fruit>()
{
public int compare(Fruit fruit1, Fruit fruit2)
{
return fruit1.quantity - fruit2.quantity;
}
};
我知道這是做什麼,但不明白爲什麼這是允許的。所以我的問題是:
- 從java文檔,Comparator [T]是一個接口。比較器[水果]怎麼樣?我會假設它是一個類,因爲它必須覆蓋比較函數。
- 爲什麼FruitNameComparator可以在{}中使用非參數構造函數和類定義進行初始化?我沒有在Comparator [T]的javadoc中找到這樣的構造函數聲明。
任何輸入將不勝感激。
+1實際上,如果你把它放在一個名爲MyClass的類中(例如)並編譯它,你會看到一個像MyClass $ 1.class這樣的文件。這是這個匿名類的類文件。 – yshavit
將其讀爲... = new(實現的類)Comparator() –
isnot2bad
謝謝。在閱讀我們的評論並思考它之後,我明白爲什麼代碼是合法的。正是我在找什麼。 –