【发布时间】:2019-09-21 05:12:21
【问题描述】:
我正在尝试用 Java 中的通用返回类型实现 Command Pattern。
在reviewing this answer on SO 之后,我创建了一个Command 类(接口),如下所示:
public interface Command <T> {
T execute(ArrayList<String> list, T type);
}
public class SearchResultsPage implements Command{
@Override
public <T extends List<ProductPOJO>> T execute(ArrayList<String> list, T type) {
List<ProductPOJO> productPOJOList = generatePOJOFromSearch(list);
type.addAll(productPOJOList);
return type;
}
}
但是,Eclipse 一直在抱怨:
SearchResultsPage 类型的方法 execute(ArrayList, T) 必须重写或实现超类型方法
但是当我点击时
在超类型Command中创建execute()
Eclipse 自动在Command 类中生成方法T execute(ArrayList<String> list, T type);(即与我创建的签名完全相同),但错误消息并没有消失。
我该如何解决这个问题?
谢谢!
【问题讨论】:
-
命令模式不接受
execute()方法的参数。请参阅:How to use Command pattern by passing to it runtime params? 将参数添加到代码中非常好;请注意,它不遵循 GoF 命令模式。
标签: java eclipse generics design-patterns command-pattern