同一泛型类如果实例化时类型不同,则实例的类型不兼容,无法相互赋值。
我们可以使用泛型通配符(?)声明泛型类变量
泛型通配方式:
a."?"代表任何一种类型
Dog<Integer> f2 = new Dog<Integer>();
Dog<?> f3 = f2;
b.和限制泛型上限相似,使用extends关键字限定通配符上限
Generics3<Dog> f3 = new Generics3<Dog>(new Dog());
Generics3<? extends Dog> f4;
f4 = f3;
c.使用super关键字设置下限
Generics3<Dog> f3 = new Generics3<Dog>(new Dog());
Generics3<? super Dog> f4;
f4 = f3;