有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案