gpt4 book ai didi

java - 在抽象方法的签名中省略对象类型

转载 作者:行者123 更新时间:2023-12-01 23:47:08 25 4
gpt4 key购买 nike

我有一个模型抽象类,我想要一个抽象方法来设置模型实例的 id。我希望实现能够定义他们想要用于 id 对象的对象。在下面的示例中, getId() 工作正常,但我无法覆盖 setId() 方法,因为签名不同:setId(Object id) 与 setId(Integer id)。我可以使用 或其他东西来完成这个任务吗?我不熟悉如何使用它们。

abstract class Model{

abstract public void setId(Object id); <-- the problem

abstract public Object getId();
}

class SQLiteModel extends Model{

private Integer id;

@Override
public void setId(Integer id){ <-- the problem
this.id = id;
}

@Override
public Integer getId(){
return id;
}
}

那么多个泛型又如何呢?

abstract class Model<T> {
abstract public void setId(T id);

abstract public T getId();

abstract public T getSomethingElse();
}

class SQLiteModel extends Model<Integer> {
private Integer id;

@Override
public void setId(Integer id) {
this.id = id;
}

@Override
public Integer getId() {
return id;
}

@Override
public String getSomethingElse(){
return "a string";
}
}

最佳答案

使模型通用

abstract class Model<T> {
abstract public void setId(T id);

abstract public T getId();
}

class SQLiteModel extends Model<Integer> {
private Integer id;

@Override
public void setId(Integer id) {
this.id = id;
}

@Override
public Integer getId() {
return id;
}
}

关于java - 在抽象方法的签名中省略对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com