Java 具有泛型返回类型的命令模式
我试图用Java中的通用返回类型实现Java 具有泛型返回类型的命令模式,java,eclipse,generics,design-patterns,command-pattern,Java,Eclipse,Generics,Design Patterns,Command Pattern,我试图用Java中的通用返回类型实现命令模式 在我创建了一个命令之后类(接口),如下所示: public interface Command <T> { T execute(ArrayList<String> list, T type); } public class SearchResultsPage implements Command{ @Override public <T extends List<ProductPOJO
命令模式
在我创建了一个命令之后
类(接口),如下所示:
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;
}
}
公共接口命令{
T执行(数组列表,T类型);
}
公共类SearchResultsPage实现命令{
@凌驾
公共T执行(ArrayList列表,T类型){
List productPOJOList=generatePOJOFromSearch(列表);
type.addAll(productPOJOList);
返回类型;
}
}
然而,Eclipse不断抱怨:
SearchResultsPage类型的方法execute(ArrayList,T)
必须重写或实现超类型方法
但当我点击
在supertype命令中创建execute()
Eclipse自动生成方法T execute(ArrayList,T type)代码>在命令
类中(即,与我创建的签名完全相同),但错误消息不会消失
我怎样才能解决这个问题
谢谢 您对execute
方法的实现不正确。您已经使用T
type参数使接口成为泛型接口,但是在具体类SearchResultsPage
中实现它时,您没有提供类型参数。这意味着您已经实现了接口的原始形式。相反,当方法本身在接口中不是泛型时,您已经将其自身设置为泛型
将class方法中的T
声明移动到类本身
public class SearchResultsPage<T extends List<ProductPOJO>> implements Command<T> {
@Override
public T execute(ArrayList<String> list, T type) {
// ...
}
}
公共类SearchResultsPage实现命令{
@凌驾
公共T执行(ArrayList列表,T类型){
// ...
}
}
命令模式不接受其execute()
方法的参数。请参阅:将参数添加到代码中是非常好的;请注意,它不遵循GoF命令模式。