java为什么Maven不编译Guava表代码而Eclipse编译器编译?(推断类型不符合上限)
我正试图用Maven编译以下代码:
final Table<Integer, Integer, Integer> destination = HashBasedTable.create();
final Map<Integer, Integer> source = new HashMap<>();
// compiles
final Table<Integer, Integer, Integer> broker =
source.entrySet().stream().collect( Tables.toTable( e -> 0, e -> 0, e -> 0,
( e1, e2 ) -> 0, HashBasedTable::create ) );
destination.putAll( broker );
// doesn't compile
destination.putAll( source.entrySet().stream().collect( Tables.toTable( e -> 0, e -> 0,
e -> 0, ( e1, e2 ) -> 0, HashBasedTable::create ) ) );
结果是错误:
incompatible types: inferred type does not conform to upper bound(s)
inferred: com.google.common.collect.Table<java.lang.Object,java.lang.Object,java.lang.Object>
upper bound(s): com.google.common.collect.Table<java.lang.Object,java.lang.Object,java.lang.Object>,com.google.common.collect.Table<? extends java.lang.Integer,? extends java.lang.Integer,? extends java.lang.Integer>,java.lang.Object
为什么我需要编译这个代理表? 最有趣的是Eclipse编译器知道如何处理它
我正在使用Maven编译器插件版本3.8.0,将目标和源标记设置为1.8
我觉得这里的工作流程有点不对劲——我在IDE中开发,一切看起来都很好,然后突然发现我的代码有点不对劲,甚至没有在Maven build上编译
我尝试了最新的3.6Maven版本,Eclipse编译器来自Eclipse2018-12,Java 8和11
# 1 楼答案
我填了一个关于这个的bug,它似乎在继续:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8219318