我有一個Model抽象類,我想要一個抽象方法來設置模型實例的ID。我希望實現定義他們想要用於id對象的對象。在下面的例子中,getId()工作正常,但我無法重寫setId()方法,因爲簽名不相同:setId(Object id)vs setId(Integer id)。我可以使用< T>或< E>或其他方法完成此操作。我不熟悉如何使用這些。在抽象方法的簽名中省略對象類型
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";
}
}
真棒。我從來沒有理解泛型。絕對需要閱讀如何使用它們。謝謝 – David
如果我想讓SQLiteModel實現另一個對象,該怎麼辦?你如何允許多種泛型? – David
你可以創建另一個類,例如類SQLiteStringModel extends 0123b{... –