Java泛型参数

Java泛型参数,java,generics,Java,Generics,我对这种情况有疑问: public abstract class Commune<T> { public abstract <T> void putSettlement(T settlement); } public class UrbanCommune() extends Commune{ private Cities cities = new Cities(); @Override public void putSettleme

我对这种情况有疑问:

public abstract class Commune<T> {
    public abstract <T> void putSettlement(T settlement);
}



public class UrbanCommune() extends Commune{
    private Cities cities = new Cities();

    @Override
    public void putSettlement(City city) {
        cities.put(City city);
    }
}
公共抽象类公社{
公共结算(T结算);
}
public类UrbanCommune()扩展了Commune{
私人城市=新城市();
@凌驾
公共定居点(城市){
城市。put(城市);
}
}
我现在正在学习泛型,所以我不明白为什么它不起作用。。。
如何管理它?

因为
T
被定义为整个类的泛型,所以您不必为方法也定义它:

public abstract class Commune<T> {
    public abstract void putSettlement(T settlement);
}

您的方法
putcolution
定义了一个额外的类型参数
T
,该参数与类定义中的参数不同。您的方法声明应该是
公共抽象无效结算(T结算)public class UrbanCommune extends Commune<City>{
    private Cities cities = new Cities();

    @Override
    public void putSettlement(City city) {
        cities.put(City city);
    }
}