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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java 比較和接口

Java 比較和接口

慕工程0101907 2021-12-10 17:00:48
假設(shè)您有 ClassA、ClassB、ClassC 和 interfaceA。ClassA 和 ClassB 實(shí)現(xiàn) interfaceA,classC 包含一個(gè) List<interface>現(xiàn)在假設(shè)我們將 ClassA 和 ClassB 中的一些值添加到 ClassC 列表中如果 ClassA 實(shí)現(xiàn)了與 ClassB 不同的可比較方法 CompareTo 會(huì)發(fā)生什么,我們調(diào)用 Collection.sort(list<interface>)哪個(gè) CompareTo 將應(yīng)用于對(duì)列表進(jìn)行排序?或者我們必須在每個(gè)實(shí)現(xiàn) interfaceA 的類中使用相同的 CompareTo 方法
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

Comparable 接口不是最好的方法。我建議使用傳遞給集合排序方法的比較器。


查看完整回答
反對(duì) 回復(fù) 2021-12-10
?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

我認(rèn)為您無(wú)法運(yùn)行此類代碼。假設(shè)你有一個(gè)抽象類:


public abstract class Number<T extends Number<T>> implements Comparable<T> {}

以及擴(kuò)展它的兩個(gè)類:


public class One extends Number<One> {

    @Override

    public int compareTo(One o) {

        return -1;

    }

}


public class Two extends Number<Two> {

    @Override

    public int compareTo(Two o) {

        return 0;

    }

}

然后執(zhí)行以下代碼段:


List<Number> list = new ArrayList<>();

list.add(new One());

list.add(new Two());

Collections.sort((List<Number>) list);

會(huì)拋出 ClassCastException


Exception in thread "main" java.lang.ClassCastException: comparable.One cannot be cast to comparable.Two

一般來(lái)說(shuō),您的想法違反了 compareTo 方法的約定(請(qǐng)參閱 Joshua Bloch Effective Java,第 12 條):


實(shí)現(xiàn)者必須確保所有 x 和 y 的 sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 。

實(shí)現(xiàn)者還必須確保關(guān)系是可傳遞的:(x.compareTo(y) > 0 && y.compareTo(z) > 0) 意味著 x.compareTo(z) > 0。

最后,實(shí)現(xiàn)者必須確保 x.compareTo(y) == 0 意味著 sgn(x.compareTo(z)) == sgn(y.compareTo(z)) ,對(duì)于所有 z 。

強(qiáng)烈建議但不嚴(yán)格要求 (x.compareTo(y) == 0) == (x.equals(y))。


查看完整回答
反對(duì) 回復(fù) 2021-12-10
  • 2 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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