Java - 如何使用泛型定义接口(interface)方法

标签 java generics interface

我创建了界面:

public interface SubApp {
           public String talk(Result<? extends Object> result);
}

这个实现:

class A implements SubApp{
   @Override
   public String talk(Result<String> result) {...}
}

我的 IDE 出现以下错误:方法未覆盖其父类(super class)中的方法。

如何在接口(interface)中定义方法来创建方法public String talk(Result<String> result)重写接口(interface)方法?

最佳答案

您的方法的问题在于您的实现比接口(interface)定义更具体,因此您的方法不会接受接口(interface)所接受的输入范围,这是不允许的。 (您可以将输出类型细化为更具体,因为输出类型可以向下转换为不太具体的类型,但对于输入来说,情况恰恰相反)。

这样的事情应该有效:

public interface SubApp<T extends Object> {
    public String talk(Result<T> result);
}

class A implements SubApp<String> {
    @Override
    public String talk(Result<String> result) { ... }
}

关于Java - 如何使用泛型定义接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20041000/

相关文章:

java - 使用 wlfullclient.jar 在 WebLogic 10.3.4 上部署已安装的应用程序

java - 使用相同的servlet和不同的请求参数在一个jsp中显示三个图表

java - 用于生成邻接矩阵的 k 数组树

c# - 泛型的循环依赖

java - onAttach 中无法初始化接口(interface)对象?

java - eclipse JDT : Is there a refactoring to replace direct field accesses with setter/getter methods?

objective-c - Swift 函数覆盖 Objective-C 方法

c# - 如何创建一个行为类似于 Session[] 集合的集合? C#

java - 接口(interface)和参数多态性

java - Java 中的多态函数调用?