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

我试图用Java中的通用返回类型实现
命令模式

在我创建了一个
命令之后
类(接口),如下所示:

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命令模式。