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

Roy*_*ijn 11 java eclipse autoboxing eclipse-juno

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

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

ResourceInjector.get().inject(true, this);
Run Code Online (Sandbox Code Playgroud)

Eclipse告诉我们:

The method inject(Object[]) is ambiguous for the type ResourceInjector
Run Code Online (Sandbox Code Playgroud)

以下方法发生冲突:

inject(Object... components);
inject(boolean arg0, Object... arg1);
Run Code Online (Sandbox Code Playgroud)

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

Roy*_*ijn 9

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

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

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

inject(true);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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