gpt4 book ai didi

java - 具有通用返回类型的命令模式

转载 作者:行者123 更新时间:2023-11-30 05:39:28 24 4
gpt4 key购买 nike

我正在尝试实现 Command Pattern在 Java 中具有通用返回类型。

reviewing this answer on SO之后我创建了一个Command类(接口(interface))如下所示:

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 不断提示:

The method execute(ArrayList, T) of type SearchResultsPage must override or implement a supertype method

但是当我点击

Create execute() in supertype Command

Eclipse自动生成方法T execute(ArrayList<String> list, T type);Command类(即与我创建的签名完全相同),但错误消息并没有消失。

我该如何解决这个问题?

谢谢!

最佳答案

您对 execute 方法的实现不正确。您已使用 T 类型参数使接口(interface)变得通用,但在具体类 SearchResultsPage 中实现该接口(interface)时不提供类型参数。这意味着您已经实现了界面的原始形式。相反,当方法在接口(interface)中不是通用的时,您已将方法本身设置为通用的。

将类方法中的 T 声明移至类本身。

public class SearchResultsPage<T extends List<ProductPOJO>> implements Command<T> {
@Override
public T execute(ArrayList<String> list, T type) {
// ...
}
}

关于java - 具有通用返回类型的命令模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com