泛型的好处:
a. 提高了程序的安全性
b. 将运行期遇到的问题转移到了编译期
c. 省去了类型强转的麻烦
public class GenericDemo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("hello");
list.add("world");
list.add("java");
//编译时不会报错
list.add(1);
doSomething(list);
}
private static void doSomething(List list) {
for(Iterator it = list.iterator(); it.hasNext(); ) {
String s = (String) it.next(); // ClassCastException
s.toUpperCase();
}
}
}
设计原则:
及早失败原则(如果你的程序有问题,就让他尽早把问题显示出来)
这样方便你尽早定位出错的原因。就向扁鹊见蔡恒公,及早发现,及早治疗
泛型可以用在类、方法以及接口上
泛型通配符
① 泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
② ? extends E
向下限定,E及其子类
③ ? super E
向上限定,E及其父类