我有课A
, B
, C
and D
where B
延伸A
, C
延伸A
and D
延伸A
.
我有以下内容ArrayList
每个都有一些元素:
ArrayList<B> b;
ArrayList<? extends A> mix = b;
我打算为变量mix
包含类型的元素B
, C
or D
。我尝试添加一个 type 元素C
into mix
像这样:
mix.add(anElementOfTypeC);
但 IDE 不允许我这样做,它说:
anElementOfTypeC 无法通过调用方法转换为 CAP#1
转换,其中 CAP#1 是新的类型变量:CAP#1 从 A 扩展
捕获?延伸A
我用过吗<? extends A>
正确吗?我该如何解决这个问题?
ArrayList<? extends A>
表示某种未知类型的 ArrayList 扩展A
.
这种类型可能不是C
,所以你不能添加C
到ArrayList。
事实上,由于您不知道 ArrayList 应该包含什么,因此无法添加anything到ArrayList。
如果你想要一个可以保存任何继承的类的ArrayListA
, use a ArrayList<A>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)