我试图扩展一个带有有界类型参数的Generic类和另一个带有typed参数的泛型类,该类遵循超级泛型的类型参数 .
Super Generic with upper bounded type parameter
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隐藏了令牌"extends"上的类型Lion和语法错误,预期
对于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泛型中实现此场景?
1 回答
您的
LionCage
类不必是通用的,但它必须在extends
子句中传递具体类型参数(Lion
):