Java 通用接口(interface) List<T> 不接受对象类型

标签 java generics interface compiler-errors

我正在尝试实现如下系统:

DtoMapper :这是一个接口(interface),它定义了任何第三方映射器应返回对象的契约(Contract)

    public interface DtoMapper<T> {

    /**
     * Converts list of T into FooResponse
     * @param List of T
     * @return FooResponse
     */
    FooResponse convertToFooResponse(final List<T> rewards);

FooMapper :实现DtoMapper传递 Bar 的列表作为方法参数,但是编译器不喜欢我对方法实现的重写,并且需要第二个实现(底部)。

public final class FooMapper implements DtoMapper {


    @Override
    FooResponse convertToFooResponse(final List<Bar> listOfBars) {
        ... Logic
    }

     @Override
    public convertToFooResponse(final List listOfBars) {
        ... I dont want this
    }

如何使我的界面满足此要求,以便将来可以实现 public convertToFooResponse(final list<Snafu> listOfSnafus); 的另一个实现?

最佳答案

您需要明确实现DtoMapper<Bar>而不是DtoMapper .

示例:

public interface DtoMapper<T> {

    /**
    * Converts list of T into FooResponse
    * @param List of T
    * @return FooResponse
    */
    FooResponse convertToFooResponse(final List<T> rewards);
}

public class FooMapperImplementation implements DtoMapper<Bar> {
    @Override
    public FooResponse convertToFooResponse(List<Bar> rewards) {
        return null;
    }
}

关于Java 通用接口(interface) List<T> 不接受对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39389240/

相关文章:

java - 比较输入列表与存储库对象列表 : Loop execution takes more time

java.lang.IllegalStateException : attempt to re-open an already-closed?

java - 如何使用 View 模型获取数组列表中的位置?

generics - 高阶泛型函数中的 ClassCastException

java - 具有有界通配符类型的数字列表列表

java - 使用表中可更改值的数据在 achartengine 中绘制用户数据时出现问题

C# 泛型重载 - 编译器无法确定正确的调用

java - 如何在java中的接口(interface)中使泛型参数可选?

ios - Xcode6 为 iPhone 创建一个空的 xib 文件?尺寸太大

c# - 哪种设计最适合这种情况?