“泛型”这个术语的意思是:“适用于许多许多的类型”。
一、List<String>创建这种特殊集合的方法是:在集合接口、类后面增加“<>”尖括号,尖括号中写入一个数据类型,即表明这个集合接口、集合类只能保存这种特定类型的对象。
二、而从Java7开始,Java允许在构造器后不添加完整的泛型信息,只要给出一个尖括号(<>)即可,Java可以推断尖括号里应该是什么泛型信息。“菱形”语法对原有的泛型并没有改变,只是更好地简化了泛型编程。
三、泛型可以使用在接口(interface)、类(class)、方法(method)。
例如:interface MyInterface<T>{
public T getType();
public void setType(T t);
}
public class MyClass implements MyInterface<String> {
public String getType() {
return null;
}
public void setType(String t) {
}
}
四、子类在实现(继承)接口(父类)是必须明确指出泛型的类型。
五、调用 test(List<Object> list){},传入的实参list不可以是List<Object>,虽然String是Object的子类;
六、test(List<Integer> list){}、test(List<String> list){}这两个并不是方法的重载,实际上List<Integer> list与List<String> list是一种形参;
七、为了表示各种泛型List的父类,可以使用类型通配符,类型通配符是一个问号?,语法:List<?> list;
但是不可以使用add()方法;因为使用通配符,不知道具体类型,所以不可以使用;
八、List<? extends Shape> 表示类型 是Shape 的子类;<? super Type> 表示它是Type本身,或是Type的父类;