当前位置: 首页 > 知识库问答 >
问题:

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

百里渊
2023-03-14

我试图用Java中的一个通用返回类型来实现< code >命令模式。

在SO上查看了这个答案后,我创建了一个命令类(接口),如下所示:

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) 必须重写或实现超类型方法

但当我点击

在超类型命令中创建 execute()

Eclipse自动生成方法<code>T execute(ArrayList

我该如何解决这个问题?

谢谢

共有1个答案

吕征
2023-03-14

execute方法的实现不正确。您已经使用T类型参数使接口通用,但在具体类SearchResultsPage中实现它时不提供类型参数。这意味着您已经实现了接口的原始形式。相反,当方法本身在接口中不是泛型时,您已经使其成为泛型。

将类方法中的< code>T声明移到类本身。

public class SearchResultsPage<T extends List<ProductPOJO>> implements Command<T> {
    @Override
    public T execute(ArrayList<String> list, T type) {
        // ...
    }
}
 类似资料:
  • 问题内容: 假设我有一个超类,它定义了以下抽象方法 现在,如果我想在某些子类中覆盖它 我收到有关类型安全和未经检查的转换的警告: 类型安全:返回类型为从类型需要选中转换,以符合从类型 没有下摔倒,如果?有什么办法可以适当消除警告吗? 问题答案: 重写方法的返回类型必须是重写方法的返回类型的子类型。 不是where 的子类型。T在这里未知。 是每个子类型化规则的的子类型。 有关通配符的一些子类型化规

  • 这个问题与这个问题很接近,但有一个主要区别。 可能的要求: (1) 我想生成一个带有通用返回值的Java函数。 (2)输入参数列表总是相同的。( (3) 函数应知道预期的返回参数类型。 我的尝试: 因为没有生成的实例,所以它不起作用。尝试使用

  • 嗯,我正在尝试实现命令模式来创建与对象的交互。 几乎所有要创建的命令都由对一个对象的请求和该对象的响应组成。 所以问题是——如何管理这些回应? 当所有命令都无效时,这很容易制作。无论它们是什么,如果它们实现@executable@接口,您都可以执行它们,因此 无效执行(对象参数) 但是,当他们的反应有不同的类型时,该怎么办?也许命令模式不适合这个项目?

  • 问题内容: 我最近看到,可以声明一个返回类型,该返回类型也受接口限制。考虑以下类和接口: 我可以这样声明一个返回类型: 如果我从某个地方调用该方法,那么IDE会告诉我返回类型具有方法以及,但是仅当我在 Function 后面指向一个点时才这样: 有没有办法获得对这样一个对象的引用?我的意思是,如果我愿意做这样的事情: 我想有一个这样的参考(伪代码): 这在Java中是有可能的,还是我只能声明这样的

  • (沙盒) 获取此错误: 类型“number”不可分配给类型“T”“number”可分配给“T”类型的约束,但“T”可以用约束{}的不同子类型实例化。(2322)输入。ts(1,26):预期类型来自此签名的返回类型。 我希望typescript能够自动推断T为数字,然后直接使用它。为什么它在抱怨?写这样的东西的正确方法是什么?谢谢

  • 我为协变返回类型的继承创建了一个小示例。基本上有三种不同的类别: 主应用程序: BaseManager: 鸟经理: 当我重写方法以返回时,为什么我需要将类型转换为? 我使用过的重写方法在返回类型上会有所不同吗?作为参考。 编辑: 我有不同的子模型,它们都继承自。所有模型都允许存在一次。我尝试将这些模型添加到列表中,而不是对每个模型使用单例。使用,我想得到实际的模型。也许我得考虑太多了。