我试图扩展具有泛型类型参数的泛型类与另一个具有泛型参数的泛型类,该泛型继超级泛型的类型化参数之后。具有上界类型参数的超级泛型public abstract class Cage<T extends Animal> { protected Set<T> cage = new HashSet<T>(); public abstract void add(T animal); public void showAnimals() { System.out.println(cage); }}我要使用特定的有界类型创建的泛型类,例如Lion我尝试了以下代码,但出现错误类型参数Lion在令牌“ extends”上隐藏了Lion和Syntax类型的错误,预期对于LionCage类中的add()方法,我得到了错误:LionCage类型的方法add(Lion)必须重写或实现超类型方法LionCage 类的意思是 Cage<Lion extends Animal>public class LionCage<Lion extends Animal> extends Cage<T extends Animal> { @Override public void add(Lion l) { cage.add(l); }}我的动物类及其子类Lion,Rat等在Animal.java中定义public class Animal { public String toString() { return getClass().getSimpleName(); } }class Rat extends Animal {}class Lion extends Animal {}由于我遇到了错误,因此我猜测我所遵循的方法可能不正确。在那种情况下,是否有任何标准的方法可以在Java泛型中实现此方案?
1 回答
ITMISS
TA贡献1871条经验 获得超8个赞
您的LionCage类不必是通用的,但必须Lion在extends子句中传递一个具体的类型paramter():
public class LionCage extends Cage<Lion> {
@Override
public void add(Lion l) {
cage.add(l);
}
}
添加回答
举报
0/150
提交
取消