Pointer<Integer,Integer> pointer1 = new Pointer<Integer,Integer>(1, 2);
泛型中父类不能 接受子类 多态的向上转型
定义变量时不知道类型,用特定占位置,在使用时确定类型。 占位符必须大写
Pointer p = new Pointer(1, 2);
class Pointer<T,V>{
private T x;
private V y;}
类型通配符:<?>表示未知类型 ,它可以匹配任何类型
List<?> list1 = new ArrayList<Object>();
类型通配符上限:<? extends> 不能高于他本身的类型 例如:Object就不行
List<? extends Number> list5 = new ArrayList<Number>();
List<? extends Number> list6 = new ArrayList<Integer>();
System.out.println("----------");
类型通配符下限:<? super 类型> 于上限相反,不能低于他本身 例如:Integer就不行
List<? super Number> list7 = new ArrayList<Object>();
List<? super Number> list8 = new ArrayList<Number>();
方法定义泛型接口定义泛型
interface AAA<T>{
T test1();
}
//方式一
class CCC<T> implements AAA<T>{
@Override
public T test1() {
return null;
}
}
//方式二
class DDD implements AAA<Integer>{
@Override
public Integer test1() {
return null;
}
}
泛型嵌套
class User<T,V>{
private String name;
private T xxx;
private V yyy;
}
class Order<T>{}
public static void main(String[] args) {
User<String, Order<Integer>> stringOrderUser = new User<>();
}