【发布时间】:2016-07-24 13:06:56
【问题描述】:
我有一个通用绑定类型的集合,定义如下:
Set<? extends BasicShape> shapes = new HashSet<>();
在我的实现中(为了这个问题),BasicShape 不是抽象的。
我希望那时能够做到:
shapes.add(new BasicShape())
I have verified,并且 extends 是包容性的 - 这意味着它包括上限本身(在我的情况下 - BasicShape)。
我在其他 SO 线程中找不到此特定问题的答案。
有人可以解释一下这种行为吗?
【问题讨论】:
-
Set<T extends BasicShape> shapes = new HashSet<>();无法编译。请发帖minimal reproducible example。 -
为什么不设置
? (另外,Tunaki 说过的话。) -
你的意思是
Set<? extends BasicShape>? -
@OliverCharlesworth:这是我即将讲授的一门课程的理论问题。从技术上讲,对于我的具体用法,我可以省略边界,但这种情况在现实中可能以一种或另一种方式发生,我想完全理解它们。
-
你应该使用 super BasicShape> 以添加 BasicShape,而 以便对其进行迭代