为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2021-04-09 18:19:56
我试图扩展具有泛型类型参数的泛型类与另一个具有泛型参数的泛型类,该泛型继超级泛型的类型化参数之后。具有上界类型参数的超级泛型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);


    }

}


查看完整回答
反对 回复 2021-04-18
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信