java - 是否可以让方法签名成为其实现的接口(interface)的子类型?

标签 java oop interface

假设我有一个界面:

public interface IDto {
}

以及一个实现此接口(interface)的类:

public class UserProfileResponseDto implements IDto {
}

在另一个界面中我有:

public interface ISortingController {
    public List<IDto> findAll();
}

在我的具体 Controller 中,我有:

public List<UserProfileResponseDto> findAll();

但它告诉我它一定是

public List<IDto> findAll();

有没有办法允许 public List<UserProfileResponseDto> findAll();因为感觉应该被允许,因为 UserProfileResponseDto实现IDto 。我问这个问题的原因是因为我觉得它使 Controller 类更加冗长,这将使维护和操作变得更容易。

最佳答案

您需要在 ISortingController 中声明一个类型参数像这样:

public interface ISortingController<D extends IDto> {
    public List<D> findAll();
}

并且您的 Controller 实现需要说 implements ISortingController< UserProfileResponseDto> .

关于java - 是否可以让方法签名成为其实现的接口(interface)的子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58088829/

相关文章:

java - 将 Thymeleaf 方言表达式返回值分配给 :with 中的 Thymeleaf 变量

java - 我应该如何设计我的 DAO 层

php - 使用 PHP OOP 从数据库中检索 mysql 信息

objective-c - Property & Private & Extended Class组合接口(interface)困惑

c# - 接口(interface)和依赖注入(inject)在 C# 中的正确使用

javascript - 如何在 TypeScript 中使用动态对象属性

java - 如何使用 sbt-assembly 插件设置 build.sbt?

java - 将主方法输入的值传递给私有(private)变量

java - 将应用程序与 spring 社交网站集成

java - OOP - 向类添加属性的最佳方法