前端之家收集整理的这篇文章主要介绍了
Java Generics:通过两个参数推断类型,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个这样的简单
方法来处理两个列表:
public static <B> void foo(List<B> list1,List<B> list2) {
}
假设我想这样称呼它:
foo(ImmutableList.of(),ImmutableList.of(1));
这将无法编译,因为javac不够智能,无法弄清楚我正在尝试创建两个整数列表.相反,我必须写:
foo(ImmutableList.<Integer>of(),ImmutableList.of(1));
我应该如何更改foo的声明以允许第一个版本和第二个版本一起工作?
我很确定Java的类型推断不足以处理统一.
您可以做的是返回某种中间对象,并将调用站点更改为:
foo(list1).and(list2)
但是它仍然只能从左到右推断,所以你必须把它称为:
foo(ImmutableList.of(1)).and(ImmutableList.of());
原文链接:https://www.f2er.com/java/129778.html