泛型类
TypeA<TypeB>与的类型不同
TypeA。您不能在
TypeA<TypeB>方法需要使用的地方传递类型的参数
TypeA。也是
TypeA<TypeB>不同于的类型
TypeA<TypeC>,因此适用相同的约束。
经典示例(来自有效Java,第二版
AFAIR)是:我们具有用于动物(
Container<Animal>)的容器,并作为
Animal具有
Lion和的子类
Butterfly。现在,如果您有方法
void func(Animal animal);
void func(Container<Animal> animalContainer);
不会接受
Container<Lion>,也不会接受
Container<Butterfly>。一定要意识到,用于保护狮子安全的坚固笼子不会阻止蝴蝶飞走,反之亦然,用厚而轻的网圈支撑蝴蝶不会对付狮子。
如果您真的确定有任何一种动物容器适合您,请声明您的函数,如下所示:
void func(Container<? extends Animal> animalContainer);
回到你的情况,我想唯一的方法,同时接受
List<TypeA>并
List<TypeA<TypeB>>会是这样的:
void doSomething(List<?> list);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)