亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在排序方法中使用匿名類

在排序方法中使用匿名類

夢里花落0921 2022-01-12 10:12:01
為什么如果我在 List 的排序方法中放置一個帶有 Comparator 的匿名類,編譯器會顯示錯誤?我的代碼:public class Example2 {public static void main(String[] args) {   List<String> l = Arrays.asList("a","b","c","d");   l.sort(Comparator<String> c= new Comparator<>() {   //compiler error        public int compare(String a, String b) {            return b.compareTo(a);        }   });}sort 方法接受一個比較器。如果我編寫此代碼,它將編譯:public class Example2 {public static void main(String[] args) {   List<String> l = Arrays.asList("a","b","c","d");   l.sort(new Comparator<String>() {                  //it's ok        public int compare(String a, String b) {            return b.compareTo(a);        }   });}或者這段代碼:public class Example2 {public static void main(String[] args) {   List<String> l = Arrays.asList("a","b","c","d");   Comparator <String> c = new Comparator<String>() {             public int compare(String a, String b) {            return b.compareTo(a);        }   };   l.sort(c);                               //it's ok}為什么會這樣?非常感謝!
查看完整描述

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) 的方法。這不太合理。


查看完整回答
反對 回復 2022-01-12
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

在第二個示例中,您沒有將比較器提供給方法,而是將其分配給“c”引用。在第三個示例中,您將其分配給 c 引用,然后將其分配給 sort 方法。

希望這可以幫助 :)


查看完整回答
反對 回復 2022-01-12
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

這里的問題不是您正在傳遞一個匿名類。


l.sort(Comparator<String> c= new Comparator<>() { ... });

這是試圖聲明一個變量,c. 變量聲明是語句,因此不能在表達式中使用。(聲明匿名類時也不能使用菱形運算符)。


如果你想聲明一個變量來保存那個比較器,并在排序調用中分配它,你可以像這樣:


Comparator<String> c;

l.sort(c = new Comparator<String>() { ... });

但我懷疑這不是你想要的。


查看完整回答
反對 回復 2022-01-12
  • 3 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號