第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在新變量聲明中覆蓋方法

在新變量聲明中覆蓋方法

喵喔喔 2023-05-10 17:21:32
在處理一個項目時,我遇到了以下代碼段,它似乎提供了代碼,完全包含在一個新的變量聲明中,它似乎覆蓋了一個方法。我以前遇到過這種形式的代碼,但不可否認,我并不完全理解它。如果有人能解釋此代碼所基于的編程機制,我將非常感激。特別是,何時允許在變量聲明中使用此類重寫方法。還有哪些其他類型的數(shù)據(jù)結(jié)構(gòu)允許這種行為?什么時候編寫這種性質(zhì)的代碼比較有利?為什么不覆蓋變量聲明之外的方法?tempRequests.sort(new Comparator<Integer>() {               @Override    public int compare(Integer integer1, Integer integer2)     {                   return integer1.compareTo(integer2);            }});
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

還有哪些其他類型的數(shù)據(jù)結(jié)構(gòu)允許這種行為?


-> 您可以通過實現(xiàn)接口 Comparable 對對象進行排序。例如:


 public class Car implements Comparable<Car> {

     private String name;

     @Override

     public int compareTo(Car b) {

     return name.compareTo(b.name);

      }

    }

->您也可以在內(nèi)部類中使用沒有覆蓋方法比較的比較器。


public class Car implements Comparator<Car> {

     private String name;

     private double price;

     @Override

     public int compare(Car b1, Car b2) {

     return b1.price - b2.price;

      }

    }

什么時候編寫這種性質(zhì)的代碼比較有利?為什么不覆蓋變量聲明之外的方法?


-> 想象一下,在使用按名稱對對象 Car 進行排序后,您想按其他方式(如按價格、按重量)進行排序。當您想在不同時間以不同方式對對象進行排序時,如何做到這一點?我們在內(nèi)部類中使用 Comparator 和 define 來做到這一點。


*此外,Comparator 是一個功能接口,因為它是唯一要實現(xiàn)的抽象方法。您可以在一行代碼中使用時髦的語法重寫:例如:


Compareator<Car> byPrice = (b1,b2) -> b1.price - b2.price;


查看完整回答
反對 回復(fù) 2023-05-10
?
互換的青春

TA貢獻1797條經(jīng)驗 獲得超6個贊

這個機制已經(jīng)在評論中得到了很好的解釋。順便說一句:自 Java 8 以來,這種匿名類的用法被認為有些過時,因為它可以用簡單的 Lambda 表達式代替:

tempRequests.sort((l, r) -> l.compareTo(r));

這適用于所有“功能接口”,它被定義為具有恰好一個非靜態(tài)和非默認方法的接口。


查看完整回答
反對 回復(fù) 2023-05-10
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號