java - 当可以从另一种类型推断出一种类型时,有没有一种方法可以避免重复泛型类型参数?

标签 java generics

这是一个人为的例子,但比我的实际代码更容易解​​释:

public interface ContainerOwner<T, C extends Container<T>> {
    // ...
}

我想避免在该类型签名中重复 T,因为当参数本身具有参数时它变得笨拙,例如:

ContainerOwner<
     Optional<Future<Map<String, Integer>>>,
     List<Optional<Future<Map<String, Integer>>>>
> foo;

在这个例子中,我觉得第一个参数可以从第二个参数推断出来。有什么技巧可以做到这一点吗?

最佳答案

一种方法是使用一个更具体的子接口(interface),它需要只有一个类型参数,例如:

public interface ListOwner<T> extends ContainerOwner<T, List<T>> {
}

那么你的代码将是:

ListOwner<Optional<Future<Map<String, Integer>>>> foo;

关于java - 当可以从另一种类型推断出一种类型时,有没有一种方法可以避免重复泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200227/

相关文章:

java - 使 Spring/Tomcat 与 HTML5 pushState 兼容

java - 为什么要对 List< 进行泛型转换?将 Set..> 扩展到 List<Set..> 在 Sun JDK 6 上成功但在 Oracle JDK 7 上编译失败?

c# - 泛型委托(delegate)的问题

java - Spring Boot - Spring Security - InvalidBearerTokenException 错误处理

java - Java下载远程文件的方法

swift - 如何在 Swift 中调用具有动态类型的泛型函数

java - C++ 模板的 Java 等价物是什么?

java - 一个接口(interface)有两个类型参数。我可以实现两种类型相同的接口(interface),以便它们兼容吗?

java - spring mvc 预期输出

Java Arraylist 存储用户输入