Java中泛型的基本使用

2021-09-23 22:43:57 字數 3087 閱讀 4102

jdk1.5後引入泛型。

假如需要定義乙個描述座標的程式類point,需要提供兩個屬性x,y。對於這兩個屬性的內容可能有如下選擇:

x = 10, y = 20

x = 10.1, y = 20.1

x = 東經80度, y = 北緯20度

因為point中的x, y 屬性有多種型別,所以採用object去接收。

舉例:定義乙個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

*/

但是針對最後乙個座標,設定方把座標內容設定成了integerstring型別 ,但是接收方不知道,於是執行時候就會出現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 乙個泛型型別,也稱為型別引數,是乙個識別符號,用於指定乙個泛型型別的名稱。型別引數可以用來宣告返回型別和充當佔位符傳遞給泛型方法。泛型方法的身體與其他方法一樣。例子 ...