【发布时间】:2018-11-29 08:00:46
【问题描述】:
我正在尝试使用另一个具有类型参数的泛型类扩展一个具有有界类型参数的泛型类,该类型参数遵循超泛型的类型参数。
具有上限类型参数的超泛型
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 类型和 令牌“扩展”的语法错误,,,预期 p>
对于 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);
}
}
我的 Animal 类及其子类 Lion、Rat 等在 Animal.java 中定义
public class Animal {
public String toString() {
return getClass().getSimpleName();
}
}
class Rat extends Animal {}
class Lion extends Animal {}
由于我收到错误,我猜测我遵循的方法可能不正确。在这种情况下,是否有任何标准方法可以在 Java 泛型中实现此场景?
【问题讨论】:
标签: java generics collections types