4 泛型 萬用字元

2021-08-20 05:57:59 字數 2221 閱讀 1765

public

static

void main(string args)

public

static

void printlist(list<?> list)

}

public

static void printlist(list

<?> list)

public

static

void printlist(list<?> list)

public

static

void

main(string args)

public

static

double

printlist(list<? extends number> list)

return s;

}

public

static void addtest2(list

<? extends number> list)

public

static

void addtest2(list<? extends

number> list)

public

static

void main(string args)

public

static

void addnumber(list<? super integer> list)

}

public

static

void

addnumber

(list<? super integer> list)

因為我們所傳入的類都是integer的類或其父類,所傳入的資料型別可能是integer到object之間的任何型別, 這是無法預料的, 也就無法接收. 唯一能確定的就是object, 因為所有型別都是其子型別。

public static void addnumber(list

<? super integer> list)

treeset(comparator<? super e> comparator)

public

class

person

public string getname

() public

void

setname

(string name)

public

intgetage

() public

void

setage

(int age)

}

public class

student

extends

person

}

public

class

comparatortest

implements

comparator

}

public

class

generictest

}

treesetts1 = new

treeset

<>(new

comparatortest());

treesetts2 = new

treeset(new

comparatortest());

consumer就是要你將已有的資料寫入物件,這時使用super,可以將該物件當做乙個只能寫入的物件。

producer的資料能夠使用object類中的方法訪問時,使用無邊界萬用字元。

需要乙個既能讀又能寫的物件時,就不用要萬用字元。

有兩種情況可以傳入「?」

1、使用過程中僅用到object的方法,跟t的具體型別無關,像equals()等等,因為任何乙個泛型肯定是object的子類;

2、使用過程中不依賴於泛型。最典型的是class<?>,因為class類的方法大多跟泛型無關。

泛型(萬用字元)

1 宣告好泛型型別之後,集合中只能存放特定型別元素 2 泛型型別必須是引用型別 3 使用泛型後取出元素不需要型別轉換.泛型函式 當函式中使用了乙個不明確的資料型別,那麼在函式上就可以進行泛型的定義。public 泛型的宣告 返回值型別 函式名 泛型 變數名 泛型類 修飾符 class 類名 泛型 泛...

泛型 萬用字元

利用泛型技術雖然解決了向下轉型所帶來的安全隱患問題,但同時又會產生乙個新的問題 即便是同乙個類,但是由於設定泛型型別的不同,那麼其物件表示的含義也是不同,是不能夠直接進行引用操作的,例如 現在有如下乙個類。class message public t getmsg 使用萬用字元 解決引數傳遞問題 p...

泛型萬用字元

萬用字元 叫做萬用字元上限,比如當乙個集合的元素型別使用?號統配符的時候,表示在向這個集合是所有集合的父類。例如如下 public static void test2 list ls test public void test1 extends t 表示 一定t 的子類或者t的本身,看如下 publ...