首選,咱們說一下,爲何要用泛型,泛型來解決什麼問題. 泛型解決, 某一個集合類內部添加多個類的某一種類的對象 之前咱們想用一個類,來解決這個問題,咱們能夠這樣java
Class Test { private Object obj; public void setObj(Object ){ this.obj=obj; } public Object getObj(){ return this.obj } } //缺點是:向上轉化的弊端,沒法調用內部對象的自有方法,只能存取. //另外一種方法也能夠寫出無數個,適配不一樣類內部類型,固然這樣寫會不少 Class StringTest { private String obj; public void setObj(String ){ this.obj=obj; } public String getObj(){ return this.obj } } 缺點是:累不累啊,,我都累了.想存多少個得寫多少個類.
泛型不但使代碼複用並且解決了向上轉型的缺點. 泛型的寫法: 類型參數(泛型參數)由尖括號包圍,多個參數由逗號分隔,如 或 <T, E>。 建議書寫:習慣上使用單個大寫字母,一般狀況下,K 表示鍵,V 表示值,E 表示異常或錯誤,T 表示通常意義上的數據類型。 泛型方法和泛型類; 泛型類:ide
public class Test { public static void main(String[] args){ Person<String> person=new Person<String>(); person.setT("一個泛型類"); System.out.println(person.getT()); } } class Person<T>{ T t; public T getT() { return t; } public void setT(T t) { this.t = t; } @Override public String toString() { return "Person{" + "t=" + t + '}'; } }
泛型方法:ui
public class test1 { public static void main(String[] args){ Person1 person = new Person1(); person.doubleT("泛型方法"); } } class Person1{ public <T> T doubleT(T t){ return t; } }
List <? extends Fruit> 意思: List中全部元素都是Fruit的子類(包含自己), List <? super Fruit> 意思: List中全部元素都是Fruit的父類(包含自己)this