Java泛型的基本應用
一、泛型概述
jdk1.5版本以后出現的新特性,用于解決安全問題,是一個安全機制。
好處:
1,將運行時期的問題ClassCastException轉到了編譯時期。
2,避免了強制轉換的麻煩。
什么時候用:
當操作的引用數據類型不確定的時候。就使用泛型(<>)。將要操作的引用數據類型傳入即可,其實<>就是一個用于接收具體引用數據類型的參數范圍。
在程序中,只要用到了帶有<>的類或者接口,就要明確傳入的具體引用數據類型。
泛型技術是給編譯器使用的技術,用于編譯時期。確保了類型的安全。
運行時,會將泛型去掉,生成的class文件中是不帶泛型的,這個稱為泛型的擦除。
泛型的通配符:未知類型。
二、泛型的使用
import java.util.*; publicclass GenericDefineDemo4 { publicstaticvoid main(String[] args) { ArrayList<String> arr=new ArrayList<String>(); arr.add("java01"); arr.add("java02"); arr.add("java03"); arr.add("java04"); Iterator<String> it=arr.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } } |
三、泛型類
1、格式
class ClassName<datatype>
{
}
2、優點
便于對任何未知的的數據類型進行操作,特別適合用作工具類,避免了強制類型轉換的麻煩。
3.示例
import java.util.*; publicclass GenericClass { publicstaticvoid main(String[] args) { Tools<String> tools=new Tools<String>("hello"); System.out.println(tools.getObj()); } } class Tools<T> { private T obj; public Tools(T t) { this.obj=t; } public T getObj() { returnobj; } publicvoid setObj(T obj) { this.obj = obj; } } |
四、泛型方法
當只需要某一個方法可以接收不同類型的參數,而不是整個類的時候,就可以用到泛型方法,它將大大提高程序代碼的擴展性。
示例代碼如下:
import java.util.*; publicclass GenericMethod { publicstaticvoid main(String[] args) { String s="hello!Nice to meet you!"; Integer inter=3; Show show=new Show(); show.print(s); show.print(inter); } } class Show { public <Q> void print(Q q) { System.out.println(q); } } |
五、靜態泛型方法
1、格式
public static <T> methodName(T param)
{
}
2、特點
由于靜態方法不可以訪問類中的泛型,如果靜態方法操作的類型不確定,這可以把泛型定義在靜態方法上。
3、示例
publicstatic <Q> void print(Q q)
{
System.out.println(q);
}
六、泛型接口
1、格式
interface Inter<T>
{
void show(T t);
}
2、特點
當接口要操作的數據類型不確定的時候,就可以使用泛型接口。
注意:
當實現接口的類已經確定了接口具體的類型時,創建對象時就不用再指明類型了,如:
class InterImpl implements Inter<String>
{
}
如果實現類仍不知道具體的類型,就要創建對象時指明,如:
class InterImpl<T> implements Inter<T>
{
}
InterImpl<String> im=new InterImpl<String>();
3、示例
import java.util.*; public class Test { public static void main(String[] args) { InterImpl<String> im=new InterImpl<String>(); im.print("hello"); } } interface Inter<T> { void print(T t); } class InterImpl<T> implements Inter<T> { public void print(T s) { System.out.println(s); } } |
七、泛型extends限定
extends E:接收E類型或者E的子類型對象。上限
一般存儲對象的時候用。比如添加元素 addAll.
八、泛型super限定
super E:接收E類型或者E的父類型對象。下限。
一般取出對象的時候用。比如比較器。
posted on 2014-03-26 11:11 順其自然EVO 閱讀(275) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄