1
子クラスのジェネリックタイプを変更するにはどうすればよいですか?私は、メソッドload()をオーバーライドできることを知っています。しかし、私はすべての子供のための普遍的な方法を作りたい。 私は負荷()Javaの子クラスのジェネリックタイプを変更するにはどうすればいいですか
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 Policeman extends Human {
}
私のクラスPoliceCarでは、何が唯一の警察官を読み込むのですか?
public class PoliceCar <T extends Policeman> extends Vehicle {
T t;
public PoliceCar() {
super(5);
}
}
このコードを使用すると、私はHumanからPoliceCarまでのすべてのインスタンスを読み込むことができます。
メソッドload()をオーバーライドしないでPoliceCarにポリシマンだけをロードするにはどうすればよいですか?そしてload
方法はT
がPoliceman
のサブクラスであるT
パラメータを必要とする
class PoliceCar<T extends Policeman> extends Vehicle<T>
:
「PoliceCar extend Vehicle」だけでもうまくいくかもしれません。 @ Zefick確かに –
Zefick
。しかし、重要なビットは 'Vehicle'に型パラメータを追加しています。 –
ありがとう!今は仕事! –