javase5引入了泛型,泛型主要是为了解决类型的问题,最主要是容器类。


class Person{} public class Generic { private Person person; public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }
这个类的可重用性太差,它不能持有其他类型的任何对象。


class Person{} public class Generic { private Object o; public Generic(Object o) { this.o = o; } public Object getO() { return o; } public void setO(Object o) { this.o = o; } public static void main(String[] args) { Generic gen = new Generic(new Person()); Person p =(Person)gen.getO(); gen.setO("Person"); String str = (String)gen.getO(); gen.setO(1); Integer i = (Integer)gen.getO(); } }
这样Generic可以存储任何类型的对象。有些情况下,我们的却希望容器能够同时持有多种类型的对象。但通常,我们只会使用容器来存储一种类型的对象。泛型主要就是用来制定容器持有什么类型的对象,而且由编译器来保证类型的正确性。·


class Person{} public class Generic<T> { private T t; public Generic(T t) { this.t = t; } public T getT() { return t; } public void setT(T t) { this.t = t; } public static void main(String[] args) { Generic<Person> gen = new Generic<Person>(new Person()); Person p = gen.getT(); } }
现在Generic里就只能存放你指定的类型对象了,并且在你从Generic种取出它持有的对象时,自动就是正确的类型。
java泛型核心概念:告诉编译器想使用什么类型,编译器帮你处理一切细节。