如何使用有界的类型化参数扩展泛型类

我试图扩展具有泛型类型参数的泛型类与另一个具有泛型参数的泛型类,该泛型继超级泛型的类型化参数之后。


具有上界类型参数的超级泛型


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泛型中实现此方案?


红颜莎娜
浏览 117回答 1
1回答

ITMISS

您的LionCage类不必是通用的,但必须Lion在extends子句中传递一个具体的类型paramter():public class LionCage extends Cage<Lion> {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void add(Lion l) {&nbsp; &nbsp; &nbsp; &nbsp; cage.add(l);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java