繁体   English   中英

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

[英]Is Eclipse Juno wrong with this ambiguous method error?

今天我一直在玩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进行构建是很好的建设......有人知道解决这个问题吗?

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

有关此错误的更多信息,请访问: http//bugs.sun.com/bugdatabase/view_bug.do?video_id = 6886431

在下列情况下应该采用什么方法?

inject(true);

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

  • 根据15.12.2.5,两者都没有比另一个更具体(int <:Object不是true)

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

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

相关问题在这里: “方法对于类型是不明确的”但类型不是模棱两可的(错误来自eclipse 3.7.2升级到eclipse 4.2) ,复制我的答案:

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

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

-DtolerateIllegalAmbiguousVarargsInvocation=true

如果你改变API,真的很奇怪

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM