这是一个人为的例子,但比我的实际代码更容易解释:
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/