界面太一般了

3 java interface

在我正在使用的Java代码中,我们有一个接口来定义我们的数据访问对象(DAO).大多数方法都采用数据传输对象(DTO)的参数.当DAO的实现需要引用特定类型的DTO时,会出现问题.然后该方法需要做一个(对我完全不必要的DTO转换为SpecificDTO.不仅如此,但编译器不能对DAO的特定实现强制执行任何类型的类型检查,DAO的特定实现应仅作为其特定类型的参数. DTO.我的问题是:我如何以尽可能小的方式解决这个问题?

joh*_*tok 12

你可以使用泛型:

DAO<SpecificDTO> dao = new SpecificDAO();
dao.save(new SpecificDTO());
etc.
Run Code Online (Sandbox Code Playgroud)

您的DAO类看起来像:

interface DAO<T extends DTO> {
    void save(T);
}

class SpecificDAO implements DAO<SpecificDTO> {
    void save(SpecificDTO) {
        // implementation.
    }
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

SpecificDTO将扩展或实施DTO.