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

标签 java

我有一个模型抽象类,我想要一个抽象方法来设置模型实例的 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/

相关文章:

java - 尝试使用数组实现循环队列时出现 ArrayIndexOutOfBoundsException

java - GWT DatePicker 语言环境

java - 并行计算集合的所有排列

java - MySql 正在记录我的更新查询,但实际上并不执行更新

java - 如何将字符串转换为二维数组 (java)(GameBoard)

java - Java 中使用 SQL 身份验证登录

java - JToolBar 防止最小化

java - 如何使用二分搜索比较 x509 证书

java - 第三方功能区组件与 Microsoft Ribbon UI 许可证?

java - Windows机器上无法通过VFS下载文件?