jdk1.5後引入泛型。
假如需要定義乙個描述座標的程式類point,需要提供兩個屬性x,y。對於這兩個屬性的內容可能有如下選擇:
x = 10, y = 20因為point中的x, y 屬性有多種型別,所以採用object去接收。x = 10.1, y = 20.1
x = 東經80度, y = 北緯20度
舉例:定義乙個point類
//因為座標可能是各種型別(integer,float,double,string),
// 所以採用object接收
public
class
point1
public
void
setx
(object x)
public object gety()
public
void
sety
(object y)
@override
public string tostring()
';}public
static
void
main
(string[
] args)
}/**
point1
point1
point1
*/
但是針對最後乙個座標,設定方把座標內容設定成了integer和string型別 ,但是接收方不知道,於是執行時候就會出現classcastexception比如下面的:
//接收方
integer x =
(integer)point1.
getx()
; integer y =
(integer) point1.
gety()
;
或者在傳參的時候,你不知道什麼型別,也會執行時發生異常:
public
static
int[
]getxy
(point1 point1)
;}
總結:
我們希望在編譯時,及時發現型別不匹配問題,但使用object接收時,發現不了
必須明確知道引數型別中的引用資料型別的具體型別object
向下轉型是,需要通過instanceof判斷
舉例:對於上面的傳參異常,可以使用instanceof進行判斷
public
static
int[
]getxy
(point1 point1);}
else
}
如果乙個類被< >
定義,那麼它就被稱為泛型類
注意:泛型值接收類,所有的基本資料型別必須使用包裝型別
舉例:使用泛型定義point類
public
class
point2
public t getx()
public
void
sety
(t y)
public t gety()
@override
public string tostring()
';}public
static
void
main
(string[
] args)
}
另外,當使用泛型類之後,也避免了向下轉型,這也就意味著安全隱患被消除了。引入泛型後,如果明確設定了型別,則為設定型別;如果沒有設定型別。則預設為object。
舉例:泛型類引入多個引數
public
class
point3
public
void
setx
(t x)
public e gety()
public
void
sety
(e y)
@override
public string tostring()
';}public
static
void
main
(string[
] args)
}
泛型不僅可以用於定義類,還可以單獨定義方法。舉例:使用泛型方法
public
class
point4
public
static
void
main
(string[
] args)
}
泛型方法可以和泛型類共存。舉例:泛型方法和泛型類共存
public
class
point5
public
void
setx
(t x)
public e gety()
public
void
sety
(e y)
public
void
print
(t t)
@override
public string tostring()
';}public
static
void
main
(string[
] args)
}
總結: Java中泛型 使用
泛型 1.5 之後出現 提高安全 1 泛型 確定 集合容器的型別。2 接收一種資料型別,引用資料型別 arraylistlis new arraylist 目的 將執行時期的 錯誤 轉化到 編譯時期,提高了安全性!3 不需要 強制型別轉換.更加安全!泛型的擦除 泛型在編譯時期使用!使用完畢直接擦除。...
Java中泛型的各種使用
1.普通的泛型使用 在使用類的時候後面的 中的型別就是我們確定的型別。public class myclass1 public void setvar t var 最普通的泛型使用,只有乙個泛型型別 test public void testmyclass1 和普通的泛型使用基本一樣,只是我們可以在...
《Java中的泛型如何使用》
了解什麼是泛型看這 泛型是什麼 以下是定義泛型方法的規則 宣告泛型方法時,在返回型別之前,需要有乙個由尖括號 分隔的泛型型別部分。2 乙個泛型型別,也稱為型別引數,是乙個識別符號,用於指定乙個泛型型別的名稱。型別引數可以用來宣告返回型別和充當佔位符傳遞給泛型方法。泛型方法的身體與其他方法一樣。例子 ...