Eclipse Juno是否错误地使用了这个模糊的方法错误?

时间:2012-07-04 06:18:59

标签: java eclipse autoboxing eclipse-juno

今天我一直在玩Eclipse Juno。来自Helios,这是一个很好的升级。一切正常,除了一个新的编译错误。

我们正在使用java.net框架'Fuse',我们调用以下方法:

ResourceInjector.get().inject(true, this);
Eclipse告诉我们:

The method inject(Object[]) is ambiguous for the type ResourceInjector

以下方法发生冲突:

inject(Object... components);
inject(boolean arg0, Object... arg1);

它在Eclipse Helios中运行良好(使用Java 1.6.0.25),但现在它提供了编译错误,并且不想再运行了。在我们看来,这是Eclipse Juno中的一个错误,如果我们使用Maven进行构建就可以很好地构建...有没有人知道解决这个问题?

3 个答案:

答案 0 :(得分:9)

这实际上是Java 5和Java 6中的一个错误。这已在Java 7中修复,Eclipse现在会检查这个“错误”。

有关此处的错误的更多信息: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6886431

在下列情况下应该调用哪种方法?

inject(true);

两者都可以应用,当然,但原始布尔肯定是更好的匹配?不符合Java语言规范(JLS):

  • 按照15.12.2.5,两者都没有比另一个更具体(int&lt ;: Object is not true)

解决方法(我们无法更改Fuse本身):

ResourceInjector.get().inject(true, new Object[] {this});

答案 1 :(得分:2)

相关问题:"method is ambiguous for the type" but the types are NOT ambiguous (and the error comes by upgrade from eclipse 3.7.2 to eclipse 4.2),复制我的回答:

已针对此问题bug 383780提交并修复了错误 以下是修复的文档: https://bugs.eclipse.org/bugs/attachment.cgi?id=218320

基本上,要修复编译器错误,请获取最新的Eclipse Eclipse发布版本(截至目前为4.2.1),在-vmargs eclipse.ini之后添加以下行:(那么你可能会需要重新启动eclipse并重建项目)

-DtolerateIllegalAmbiguousVarargsInvocation=true

答案 2 :(得分:0)

如果你改变API

,真的很奇怪

inject(boolean arg0,Object ... arg1);

inject(Boolean arg0,Object ... arg1);

然后注入(真的,这个)不再含糊不清

我认为错误修复http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199075绝对是个坏主意