【发布时间】:2021-06-21 11:16:03
【问题描述】:
我有以下代码:
private Set<? extends DecisionGroupDto> parentGroups = new HashSet<>();
public DecisionDto(Decision decision) {
super(decision);
if (decision != null) {
Set<? extends DecisionGroup> parentGroups = decision.getParentGroups();
if (CollectionUtils.isNotEmpty(parentGroups)) {
for (DecisionGroup parentGroup : parentGroups) {
this.parentGroups.add(new DecisionGroupDto(parentGroup));
}
}
}
}
现在是以下行:
this.parentGroups.add(new DecisionGroupDto(parentGroup));
失败并出现以下错误:
Required type: capture of ? extends DecisionGroupDto
Provided:DecisionGroupDto
如何让this.parentGroups 不仅接受来自DecisionGroupDto 的派生类,还接受来自DecisionGroupDto 本身的派生类?
【问题讨论】:
-
您必须将其声明为
Set<DecisionGroupDto>。但这限制了您可以分配给parentGroups的内容(也许您不需要) -
你为什么首先使用
? extends?