3 回答

TA貢獻1828條經驗 獲得超4個贊
第一個失敗,因為它是一項任務。sort 方法需要一個 Comparator 類的對象。因此,當您說 sort(new Comparator) 時,您正在創建一個新的 Comparator 并立即將其傳遞給 sort 方法。當你有 Comparator c = new Comparator () 然后你有 sort(c) 時,你創建一個新的 Comparator,將它存儲在變量 c 中,并將它傳遞給 sort 方法。
第一段代碼嘗試為變量 c 分配一個新的 Comparator 并將其傳遞給方法 sort,java 的語法不允許這樣做。這類似于擁有一個將一個整數作為參數并寫入 foo(int bar = 7) 的方法。這不太合理。

TA貢獻1873條經驗 獲得超9個贊
在第二個示例中,您沒有將比較器提供給方法,而是將其分配給“c”引用。在第三個示例中,您將其分配給 c 引用,然后將其分配給 sort 方法。
希望這可以幫助 :)

TA貢獻1865條經驗 獲得超7個贊
這里的問題不是您正在傳遞一個匿名類。
l.sort(Comparator<String> c= new Comparator<>() { ... });
這是試圖聲明一個變量,c. 變量聲明是語句,因此不能在表達式中使用。(聲明匿名類時也不能使用菱形運算符)。
如果你想聲明一個變量來保存那個比較器,并在排序調用中分配它,你可以像這樣:
Comparator<String> c;
l.sort(c = new Comparator<String>() { ... });
但我懷疑這不是你想要的。
添加回答
舉報