Java 接口(interface) - 参数多态性

标签 java interface polymorphism

在 Java 中,实现方法参数需要参数多态性的接口(interface)的“正确”方法是什么?

比如我的界面包含:

public int addItem(Object dto);

该接口(interface)由各种类实现,但在每个类中,dto 参数都是各种强类型对象之一,例如 planeDTO、trainDTO 或 automobileDTO。

例如,在我的 planeDAO 类中:

public int addItem(planeDTO dto) { ... }

我是否只需将 dto 参数作为 Object 来实现,然后转换为适当的类型?

最佳答案

如果 DTO 都继承自一个公共(public)父类(super class)或实现一个公共(public)接口(interface),您可以:

// 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)以接受接口(interface)/父类(super class):

// 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) { ... }
}

关于Java 接口(interface) - 参数多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760064/

相关文章:

java - 学习多态性

c# - 当一种类型需要额外的属性时尝试实现多态性

java - 在没有类型的情况下使用 Java 泛型 - 泛型删除?

java - 如何使第一列增长,而所有其他列在 MigLayout 中具有最小尺寸?

java - 接口(interface)返回类型

java - 在这种情况下,是创建通用 DAO 还是将其与较小的 DAO 分开更好?

python - 比较两个类列表对象的内容的最佳方法是什么?

java - 如何转换一串俄语西里尔字母?

java - 修复此铸件行为的最简洁方法

interface - 与没有 native API 的应用程序交互