java - 如何使接口(interface)中的返回类型通用?

标签 java generics

共有三个 Java 1.6 接口(interface),它们相互继承:

interface First<T extends First<T>> {
  T me();
}
interface Second<T extends Second<T>> extends First<T> {
}
interface Third<T extends Third<T>> extends Second<T> {
  void foo();
}

现在我期待这个能起作用,但没有:

// somewhere later
public void bar(Third t) {
  t.me().foo();
}

编译器表示 t.me() 的类型为 Second。我做错了什么?

最佳答案

试试这个:

public <T extends Third<T>> void bar(Third<T> t) {
    t.me().foo();
}

关于java - 如何使接口(interface)中的返回类型通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693476/

相关文章:

Java 接口(interface)函数返回实现它的类

java - 使用泛型类型参数作为方法参数而不是使用对象类型有什么用?

java - 将 XML 文件编码为 Java pojo/域对象

java - Controller 测试模拟装置

java.net.ConnectException : Connection refused when SocketChannel. open 被调用

java - 将泛型返回类型与 Java 中类似的泛型变量进行比较

java - 从传递的参数将对象转换为类

Java:ArrayList 上的 StringUtils.join 返回 NoSuchMethodError 异常

Java:如何解决读写器问题?

java - 带有自定义 Java Generic 的 newInstance()?