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

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

BinaryTree 期望 Comparable,另一個(gè)實(shí)現(xiàn) Comparable 的子類不起作用

BinaryTree 期望 Comparable,另一個(gè)實(shí)現(xiàn) Comparable 的子類不起作用

陪伴而非守候 2023-05-10 13:19:23
我有一個(gè)通用抽象類 ,BString它期望其類型之一實(shí)現(xiàn)Comparable. 另一個(gè)類NGramextends作為可比類型BString傳遞。String最后一堂課,BinarySearchTree需要擴(kuò)展的鍵Comparable。為什么我無法創(chuàng)建一個(gè)BinarySearchTreewithNGram作為鍵類型?我在下面包含了類聲明,請(qǐng)注意雖然BString覆蓋了compareTo,NGram但沒有。當(dāng)我實(shí)際創(chuàng)建 時(shí)BinarySearchTree,如代碼的最后一行所示,我收到以下消息:綁定不匹配:類型NGram不是<K extends Comparable<K>>類型的綁定參數(shù)的有效替代BinarySearchTree<K,V>下面是代碼。public abstract class BString<Alphabet extends Comparable<Alphabet>> implements Iterable<Alphabet>, Comparable<BString<Alphabet>> {protected FixedSizeFIFOWorkList<Alphabet> str;}public BString(Alphabet[] str) {    this.str = new CircularArrayFIFOQueue<Alphabet>(str.length);    for (int i = 0; i < str.length; i++) {        this.str.add(str[i]);    }}public class NGram extends BString<String> {    public NGram(String[] str) {        super(str);    }}public class BinarySearchTree<K extends Comparable<K>, V>    extends ComparableDictionary<K, V> {    // The root of the BST. Root is null if and only if the tree is empty.    protected BSTNode root;    /**     * Create an empty binary search tree.     */    public BinarySearchTree() {        super();        this.root = null;    }}new BinarySearchTree<NGram,Dictionary<AlphabeticString, Integer>>()
查看完整描述

2 回答

?
慕婉清6462132

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

您收到此錯(cuò)誤是因?yàn)槟崖暶鳎?/p>

BinarySearchTree<K extends Comparable<K>, V>

當(dāng)您使用NGramas K 時(shí),預(yù)計(jì)會(huì)實(shí)現(xiàn)Comparable<NGram>. 由于它沒有實(shí)現(xiàn),因此Comparable<NGram>您會(huì)收到錯(cuò)誤消息。

編輯

有關(guān)此問題和解決方法的更多詳細(xì)信息:

當(dāng)超類實(shí)現(xiàn)時(shí)Comparable<SuperClass>,子類不能再次實(shí)現(xiàn)Comparable<SubClass>。這將意味著子類兩次實(shí)現(xiàn)相同的通用類型。Java不允許。

Comparable<SuperClass>解決方法是也在子類中實(shí)現(xiàn)。在方法實(shí)現(xiàn)中,檢查子類類型并進(jìn)行處理。最好不要實(shí)現(xiàn) `Comparable 你有一個(gè)類層次結(jié)構(gòu)。相反,使用比較器。

因此,要在當(dāng)前情況下解決您的問題,請(qǐng)聲明BinarySearchTree以下方式以允許NGramas K

BinarySearchTree<K extends Comparable<? super K>, V>

否則,擺脫Comparable并改用Comparator。請(qǐng)注意,如果沒有上述更改,您可以在構(gòu)建時(shí)使用BStringas因?yàn)樗鼘?shí)現(xiàn)了.KBinarySearchTreeComparable<BString>


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
幕布斯7119047

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

您的類NGram實(shí)現(xiàn)Comparable<BString<Alphabet>>(繼承自BString)。為了滿足 的BinarySearchTree類型參數(shù)的邊界要求K,它需要實(shí)現(xiàn)Comparable<NGram>,而不是。后者不是前者的子類型。

本質(zhì)問題是 的BinarySearchTree要求過于嚴(yán)格。為了比較兩個(gè)NGrams,它不需要那個(gè)類專門與它自己進(jìn)行比較。它足以與它自己的任何超類相媲美。準(zhǔn)確地說,這個(gè)概念可以這樣表達(dá):

public class BinarySearchTree<K extends Comparable<? super K>, V> 
       extends ComparableDictionary<K, V> // ...

當(dāng)然,這ComparableDictionary也可能需要放松。


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

添加回答

舉報(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)