【发布时间】:2012-10-03 08:28:04
【问题描述】:
有以下类:
public class LivingBeing { … }
然后是
public class Human extends LivingBeing { … }
现在还有这个包装器:
public class LivingBeingWrapper<T extends LivingBeing> { … }
完成图片还有方法
public boolean validate(LivingBeingWrapper<LivingBeing> livingBeingWrapper)
现在写下面的代码时
LivingBeingWrapper<Human> wrapper = createHumanWrapper();
validate(wrapper);
我得到以下编译错误:
方法 validate(LivingBeingWrappe
livingBeingWrapper) 类型的 MyType 不适用于 参数(LivingBeingWrapper )。
但是为什么呢? Human 扩展 LivingBeing。
【问题讨论】:
-
<LivingBeing>表示只有 LivingBeing,<? extends LivingBeing>表示它可以扩展 LivingBeing。例如人类。 -
我认为您正在遭受类型擦除...不过,对于结构良好的问题 +1
-
你可以试试:
public boolean validate(LivingBeingWrapper<? extends LivingBeing> livingBeingWrapper)
标签: java generics inheritance compiler-errors extends