如何在Java中更改子类中的泛型类型
如何更改子类中的泛型类型。我知道,我可以重写方法load();但是我想为所有的孩子制定一个通用的方法。 我有抽象的超类如何在Java中更改子类中的泛型类型,java,generics,Java,Generics,如何更改子类中的泛型类型。我知道,我可以重写方法load();但是我想为所有的孩子制定一个通用的方法。 我有抽象的超类 public abstract class Vehicle <T extends Human> { T t; private final int maxPassengers; private Set<T> currentPassengers = new HashSet<>(); public Vehicle(
public abstract class Vehicle <T extends Human> {
T t;
private final int maxPassengers;
private Set<T> currentPassengers = new HashSet<>();
public Vehicle(int maxPassengers) {
this.maxPassengers = maxPassengers;
}
public void load (T human) throws ToManyPassangersExeption {
if (currentPassengers.size()<maxPassengers)
currentPassengers.add(human);
else
throw new ToManyPassangersExeption();
}
}
在我班的警车里,我只装警察
public class PoliceCar <T extends Policeman> extends Vehicle {
T t;
public PoliceCar() {
super(5);
}
}
公共级警车扩展车辆{
T;
公共警车{
超级(5);
}
}
使用此代码,我可以将所有人的实例加载到警车
如何在不重写方法load()的情况下仅在PoliceCar中加载policer?使用非原始超类声明
PoliceCar
类型:
class PoliceCar<T extends Policeman> extends Vehicle<T>
class警车扩展车辆
然后load
方法将需要T
参数,其中T
是police
的子类
请参阅。仅
警车扩展车辆
也可能很好。@Zefick确实如此。但关键是要将类型参数添加到车辆
。谢谢大家!现在它的工作!
class PoliceCar<T extends Policeman> extends Vehicle<T>