【问题标题】:Why does Eclipse complain about ambiguity in overloaded varargs method?为什么 Eclipse 抱怨重载 varargs 方法的歧义?
【发布时间】:2014-01-27 08:20:14
【问题描述】:

我的 Eclipse(Indigo Service Release 2)在 Guava 的 DoubleMathTest(当前当前 HEAD,eb89cdb)中抱怨该方法调用

DoubleMath.mean(11, -22, 44, -88);

模棱两可。正好定义了以下五种方法

public static double mean(double... values) {...}
public static double mean(long... values) {...}
public static double mean(int... values) {...}
public static double mean(Iterable<? extends Number> values) {...}
public static double mean(Iterator<? extends Number> values) {...}

所以我真的看不出有任何歧义。这是 Eclipse 错误吗?

【问题讨论】:

  • 嗯。与开普勒一起工作对我来说很好。可能只是在以后的版本中修复的一个旧错误?

标签: eclipse guava variadic-functions


【解决方案1】:

这个问题可以通过强制转换来解决。 因为Eclipse 无法判断您的参数是什么类型。
试试:
DoubleMath.mean(11L, -22L, 44L, -88L);

DoubleMath.mean((int)11, (int)-22, (int)44, (int)-88);

编辑

如果问题未解决,则可能是Eclipse 的不同版本不同的问题/错误。
我写的代码对我来说很好用。 (使用Juno
Jon 甚至没有遇到您的代码问题(使用 Kepler)。
投射到 Double 时,问题已部分解决。 (使用Indigo Service Release 2)。

所以肯定和Eclipserelease有关。

【讨论】:

  • 没有任何变化。参数是ints,即使没有强制转换。使用double args 是唯一有效的方法。
  • 我猜Eclipse 的不同版本问题会有所不同。我写的代码对我来说很好用。 @Jon 甚至没有你的代码有这个问题。
  • 好的,所以这不是很有趣,只是一个已经解决的老错误,我无法谷歌搜索。您介意更新您的答案以便我接受吗?
  • 已更新。如果您想添加任何内容,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2010-11-02
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2014-08-14
  • 2012-09-13
  • 1970-01-01
相关资源
最近更新 更多