Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中更改子类中的泛型类型_Java_Generics - Fatal编程技术网

如何在Java中更改子类中的泛型类型

如何在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(

如何更改子类中的泛型类型。我知道,我可以重写方法load();但是我想为所有的孩子制定一个通用的方法。 我有抽象的超类

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>