泛型的定义与普通类定义相比,首先在类名后增加了由尖括号标识的类型变量,一般用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