泛型
在JDK1.4之前,集合容器什么类型的对象都可以存储,但是在取出时,需要用到对象特有内容时,需要向下转型。对象的类型的不一致,又导致了向下转型发生了ClassCastException异常。为了避免这个问题,只能主观上控制,往集合中存储同一类型的对象。
JDK1.5之后解决了这个问题,在定义集合时,就直接明确集合中存储元素的具体类型。这样,编译器在编译时,就可以对集合中存储的对象类型进行检查。一旦发现类型不匹配,就编译失败。这个技术就是泛型技术。
泛型的好处:
1.操作数据更安全(规范了集合中能保存的数据类型);
2.避免向下转型的麻烦;
3.将运行时的错误转移到了编译时报错。
ArrayList<String> list = new ArrayList<String>();
泛型类:在类定义时就明确参数,由使用该类的调用者,来传递具体的类型。
public class Worker<Z>
类上声明的泛型会在创建对象的时候被赋值。
泛型还可以在方法上声明,方法上声明了泛型后,该泛型会在方法被调用的时候,赋值泛型。
泛型通配符:
在不明确具体类型的情况下,可以通过通配符来表示。 <?>
泛型的限定:
? extends E //接受E类型或者E类型的子类 泛型的向下限定
? super E // 接受E类型或者E的父类型 泛型的向上限定