1、泛型的基本作用
有時候建立乙個類,需要這個類中的屬性是object型別的,可以時而為string型別,時而為long型別等。比如乙個座標類point,橫座標和縱座標可能是整型,可能是浮點型,也可能是字串型別,需要輸出的結果如下:
**如下:
package org.mole.t;
public class point
public void setx(object x)
public object gety()
public void sety(object y)
}public class mixdemo
}通過以上的方法來實現屬性型別的可變不是很妥當,程式入口不規範,並且存在安全漏洞。例如,把屬性設定型別設定為object型別,當給屬性的賦值與其強制型別裝換不匹配時程式編譯不會出錯,執行報錯。
在jdk1.5之後,引入了泛型解決此類問題,使類中屬性的型別由外部決定。泛型的宣告如下:
class 類名 《泛型型別,泛型型別……>
public void setx(t x)
public t gety()
public void sety(t y)
}public class mixdemo
}使用泛型後類point中屬性的型別由外部決定,這時,當pointp = new point()例項化時宣告是integer型別時,再對p賦值為其他型別,編譯就會報錯。
可以在構造方法上使用泛型:
public class point
public void setx(t x)
public t gety()
public void sety(t y)
point(t x,t y)
}泛型也可以擦除,在使用泛型時不指定泛型,直接point f = new point();便擦除了泛型,後面的使用按object使用,擦除泛型一般不用
2、泛型的萬用字元的使用
類表示可以接受任意型別的泛型結合以上**加入fun()方法,**如下:
package org.mole.t;
public class point
public void setx(t x)
public t gety()
public void sety(t y)
}public class mixdemo
public static void fun(point> p)
}值的注意的是,普通的類可以向上轉型,應用泛型的類卻不能向上轉型。
泛型上限:操作泛型的最大父類,格式如下
類名稱《泛型名稱 extends 父類名稱》{}
泛型上限也可以應用在方法上,例如:
public static void fun(point extends number> p)
泛型下限:造作泛型的最小的型別,格式如下
類名稱《泛型名稱 super 型別名稱》{}
泛型下限也可應用在方法上。
3、泛型介面
泛型不僅能在類中使用,也可在介面中使用,格式如下:
inte***ce 介面名稱《泛型,泛型……>
package org.mole.t;
public class deomimpl1implements demo
}package org.mole.t;
public class demotest
}第二:建立乙個類,實現介面中泛型為類
package org.mole.t;
public class demotest2
}public inte***ce demo
public class deomimpl2 implements demo
}4、泛型方法
在方法上使用泛型,該方法所在的類不一定是泛型的操作類。泛型的使用格式如下:
package org.mole.t;
public class demo2
}public class test2
}**的執行結果如下:
也可將返回值設定為泛型陣列
5、泛型的巢狀
將info的型別設定到person中,同時person和info都是泛型,操作**如下:
package org.mole.t;
public class person
public void setinfo(t info)
}public class info
public void setparam(t param)
}public class test1
}
Java中的泛型
我們在定義的時候 就會確定資料型別 而泛型 就是是資料型別引數化 集合框架中沒有使用泛型和使用泛型的比較 沒有使用泛型 list li new linkedlist li.add 100 int x int li.get 0 system.out.println x 使用泛型 listli new ...
java中的泛型
如果乙個類裡只接受整數型別,那麼無法加入浮點型別 如果用object類物件取代整數型別,那麼編譯器就要正常判斷當前物件實際是哪一種型別,這會很浪費時間。如果用某個未指定的型別t取代整數型別,實際使用時再加入具體型別,那麼就可以處理多種型別的物件。例如 public class store publi...
java中的泛型
之前對泛型的理解一直停留在listj集合中的元素限定的那塊,後來慢慢的接觸到了介面的泛型,類以及方法的泛型。下面結合查到的資料,算是記錄一下。由於集合中的泛型限定太多簡單就不舉例了,現在來說說介面,類,和方法中的泛型。我們常見的比如 t,e,v,k等形式的引數常用於表示泛型形參,接收來自外部使用時候...