在Java中,实现接口参数方法需要参数多态性的“正确”方法是什么?
例如,我的界面包含:
public int addItem(Object dto);
该接口由各种类实现,但是在每个dto参数中,它们是各种强类型对象之一,例如planeDTO,trainDTO或automotiveDTO.
例如,在我的planeDAO类中:
public int addItem(planeDTO dto) { ... }
我是否只是使用dto参数作为Object来实现,然后将其转换为适当的类型?
解决方法:
如果DTO都来自公共超类或实现公共接口,则可以执行以下操作:
// DTO is the common superclass/subclass
public interface Addable<E extends DTO> {
public int addItem(E dto);
}
您的特定实现可以做到:
public class PlaneImpl implements Addable<planeDTO> {
public int addItem(planeDTO dto) { ... }
}
或者,您可以简单地定义接口以接受interface / superclass:
// DTO is the common superclass/subclass
public interface Addable {
public int addItem(DTO dto);
}
编辑:
您可能需要执行以下操作:
创建界面-
interface AddDto<E> {
public int addItem(E dto);
}
并在您的DAO中实现它.
class planeDAO implements AddDto<planeDTO> {
public int addItem(planeDTO dto) { ... }
}