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

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

Java boolean addAll 方法和泛型類型參數(shù)問題

Java boolean addAll 方法和泛型類型參數(shù)問題

守著星空守著你 2021-06-05 16:36:47
我目前正在學(xué)習(xí)泛型,我有一個任務(wù),我必須使用 T 類型參數(shù)和數(shù)組數(shù)據(jù)成員和一些方法(setItem、getItem、visitor、condition 和 addAll)創(chuàng)建一個數(shù)組類。我對 addAll 方法有問題:public class Array<T> {   private T[] array;   public Array(T[] array){      this.array = array;   }   public void setItem(int i, T item){      if (i < 0 || i > array.length) {        System.out.println("There is no this value in the array!");      }      array[i] = item;   }   public T getItem(int i){       if (i < 0 || i > array.length) {              System.out.println("There is no this item in the array!");        }        return array[i];     }   public <E> boolean addAll(Collection<? extends E> c){       boolean modified = false;       for (E e : c){           if (c.add(e)){               modified = true;           }        }       return modified;   }}NB 不接受ein add 方法。我不明白為什么...... 如果我在方法中使用 T 類型參數(shù)而不是 E (public boolean addAll(Collection <? extends T>c){} ),情況是一樣的。我收到消息不兼容的類型:E 無法轉(zhuǎn)換為 CAP#1,其中 E 是類型變量,而 CAP#1 是新的類型變量。我究竟做錯了什么?我的第二個問題是 Array 類使用了一個抽象的 Condition 類,它有 6 個子類。andCondition、orCondition 等都可以,但是greaterCondition 和doubleCondition 不起作用。我知道問題出在哪里,但我找不到解決方案。首先,我只<T>在 classname 之后使用,然后嘗試以下<T extends Number>,但沒有改變:public abstract class Condition<T> {    public abstract boolean condition(T item);}public class doubleCondition<T extends Number> extends Condition<T> {    public DoubleCondition (){       }    @Override    public boolean condition(T item) {       if (item % 2 == 0){           return true;       }       return false;   }我收到消息:二元運(yùn)算符的操作數(shù)類型錯誤%,第一種類型:T,第二種類型:int,其中 T 是類型變量。我應(yīng)該如何使用類型參數(shù)或布爾條件方法來檢查參數(shù)中的項(xiàng)目是否可以在沒有左的情況下除以 2,所以它是雙/偶。和greaterCondition 類:public class greaterCondition<T extends Number> extends Condition<T> {    private T border;    public  (T border){        this.border = border;    }    @Override    public boolean condition(T item) {        return item > border;    }}這里NB不處理>操作符。
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊

您的方法不是類型安全的,有兩個原因:

  1. E和之間沒有關(guān)系T;你可以傳遞一些完全不相關(guān)的類型的集合。

  2. 您可以將內(nèi)容添加到 的集合中? extends Whatever,因?yàn)槟恢涝摷蠈?shí)際包含的類型(它可能只是某個其他子類的集合)。

相反,您應(yīng)該創(chuàng)建一個接受 a 的非泛型方法Collection<? super T>,該方法保證能夠保存Ts (因?yàn)樗?的集合T或超類型T)。


查看完整回答
反對 回復(fù) 2021-06-10
  • 1 回答
  • 0 關(guān)注
  • 238 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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