我正在尝试实现以下系统:
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;
    }
}

10-07 19:05