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