加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Generics:通过两个参数推断类型

发布时间:2020-12-15 00:49:15 所属栏目:Java 来源:网络整理
导读:假设我有一个这样的简单方法来处理两个列表: public static B void foo(ListB list1,ListB list2) {} 假设我想这样称呼它: foo(ImmutableList.of(),ImmutableList.of(1)); 这将无法编译,因为javac不够智能,无法弄清楚我正在尝试创建两个整数列表.相反,我必
假设我有一个这样的简单方法来处理两个列表:
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());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读