1. 泛型常见通配符
1.1. T Type类型, java类。
1.2. K Key类型, 键值对中的键。
1.3. V Value类型, 键值对中的值。
1.4. E Element元素类型, 集合中使用。
1.5. N Number数值类型。
1.6. ? 表示不确定的java类型, 无限制通配符类型。
2. 界定通配符的上边界
2.1. 类型1指定一个数据类型, 那么类型2就只能是类型1或者是类型1的子类:
Vector<? extends 类型1> x = new Vector<类型2>();
Vector<? extends Number> x = new Vector<Integer>(); // 这是正确的
Vector<? extends Number> x = new Vector<String>(); // 这是错误的
3. 界定通配符的下边界
3.1. 类型1指定一个数据类型, 那么类型2就只能是类型1或者是类型1的父类:
Vector<? super 类型1> x = new Vector<类型2>();
Vector<? super Integer> x = new Vector<Number>(); // 这是正确的
Vector<? super Integer> x = new Vector<Byte>(); // 这是错误的