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
}
consumer就是要你將已有的資料寫入物件,這時使用super,可以將該物件當做乙個只能寫入的物件。treesetts1 = new
treeset
<>(new
comparatortest());
treesetts2 = new
treeset(new
comparatortest());
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...