泛型的定義與普通類定義相比,首先在類名后增加了由尖括號標識的類型變量,一般用T表示。T可以在泛型中的任何地方使用。對於泛化接口也是這樣定義。
我們來看看普通類Box以及Box的泛型的代碼:
(1)普通類Box的定義
public class MyBox{
private Object object;
public void add(Object object) {
this.object = object;
}
public object get() {
return object;
}
}
(2)Box類的泛型定義
public class MyBox<T>{
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
在MyBox類的泛型定義中,將類聲明中的“public class MyBox”改為“public class MyBox<T>”,並且把MyBox類體中所有的Object都用T進行替換,從而將MyBox定義為能存放各種確定類型對象容器的抽象類型。
package practice;
public class MyBoxTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBox<String> aBox = new MyBox<String>();
aBox.add(new String("阿"));
String i = aBox.get();
System.out.println(i);
}
}
輸出:
阿
public class MyBoxTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBox<Integer> aBox = new MyBox<Integer>();
aBox.add(newInteger("2018"));
Integer i = aBox.get();
System.out.println(i);
}
}
輸出:
2018