舉例如下
class Animal<T> {
private T age;
private T weight;
public Animal(T a, T w) {
setAge(a);
setWeight(w);
}
public T getAge() {
return age;
}
public void setAge(T n) {
age = n;
}
public T getWeight() {
return weight;
}
public void setWeight(T n) {
weight = n;
}
public void speak() {
System.out.println("哈囉,我已經" + getAge() + "歲,有" + getWeight() + "公斤重");
}
}
class GenericDemo {
public static void main(String[] args) {
Animal puppy1, puppy2;
puppy1 = new Animal(6, "70");
puppy2 = new Animal("八十八", "五千");
puppy1.speak();
puppy2.speak();
}
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:GenericDemo.java
功能:示範物件導向的基本觀念
作者:張凱慶
時間:西元 2010 年 10 月 */編譯後執行,結果如下

我們暫時不管編譯器 (compiler) 的警告訊息,第 1 行
class Animal<T> {這裡的 <T> ,就是角括號圍起來的大寫字母 T ,這是一個識別字,表示 Type 的縮寫,意思是 Animal 中任何使用 T 的地方,無論傳入何種型態,如 int 或 String 等,這裡的 T 都會被代換成 int 或 String 。
泛型在 Collection 相關的型態很常用到,這是由於陣列 (array) 會在編譯時期進行型態檢查,直接挑出錯誤,然而 Collection 的型態在編譯時會過關,反而在執行時才會出錯。使用泛型可使問題由編譯器挑出來,因此提供了更好的型態安全性。
| 中英文術語對照 | |
|---|---|
| 成員 | member |
| 泛型 | generic |
| 編譯器 | compiler |
| 陣列 | array |
參考資料
http://download.oracle.com/javase/tutorial/java/generics/generics.html
http://download.oracle.com/javase/tutorial/java/generics/gentypes.html
http://download.oracle.com/javase/tutorial/java/generics/generics.html
http://download.oracle.com/javase/tutorial/java/generics/gentypes.html
3 則留言:
請問傳入的型態若是object型態也適用嗎?
T 可以是任意的物件型態,但必須是相同的物件型態唷
^_^
https://www.blogger.com/profile/10096342137342970684
張貼留言