泛型实现了参数化类型的概念。注意,什么是参数化类型?举个例子
DaoHolder<T>
DaoDaoHolder:表示类
<T> T就表示参数。
上面什么意思。表示我这个类使用很多很多类型。T可以被Person、Org等类替换。
泛型最初的目的是希望类和方法有最广泛的表达能力。如何实现?
就是通过
DaoHolder<T> 与使用类之间的约束。DaoHolder<Org>
在java中有很多原因促成泛型的出现,其中一个主要原因是容器。容器就是存放使用对象的地方。数组算容器,但是泛型更加灵活,具备更多灵活的功能。程序在运行的时候需要一大堆对象,这就是容器的用途,容器算是最有用的类了。
泛型其实就是一个模板。
泛型的主要目的
指定容器要持有什么类型的对象,由编译器保证类型的正确性。
我们更喜欢暂时不指定类型,而在使用时决定是什么对象类型。如何达到这个目的,对了,使用类型参数,用尖括号括住,放在类的后面。
public class Holder3<T> {
private T a;
public Holder3(T a) {
this.a = a;
}
public void set(T a) {
this.a = a;
}
public T get() {
return a;
}
public static void main(String[] args) {
Holder3<Automobile> h3 = new Holder3<Automobile>(new Automobile());
Automobile a = h3.get(); // No cast needed
// h3.set("Not an Automobile"); // Error
// h3.set(1); // Error
}
class Automobile {
}
}