2012-07-04 19 views
10

今日私はEclipse Junoで遊んでいます。 Heliosから来て、それは素晴らしいアップグレードです。 1つの新しいコンパイルエラーを除いて、すべてうまくいっています。Eclipse Junoはこのあいまいなメソッドエラーで間違っていますか?

我々はjava.netフレームワーク 'ヒューズ' を使用していて、私たちは次のメソッドを呼び出します。次のメソッドが衝突

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

ResourceInjector.get().inject(true, this); 

Eclipseが教えてくれるの

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

Eclipse Heliosではうまくいきましたが(Java 1.6.0.25で)、コンパイルエラーが発生し、実行したくありませんもっと。これはEclipse Junoのバグだと思われます。Mavenを使用してビルドするとうまくビルドされているようです...誰でもこの回避策を知っていますか?

答えて

8

これは実際に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型:オブジェクトは真ではありません)

回避策(我々

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

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ジュノのリリースビルド(今のよう4.2.1)を取得、eclipse.ini-vmargs後に次の行を追加します(その後あなたがAPI

注入(ブール値arg0は、オブジェクト... ARG1)を変更した場合、ということは本当に奇妙である

-DtolerateIllegalAmbiguousVarargsInvocation=true 
+0

これは意図的だったことを示す必要があり、「容認」であいまいな(これ、本当の)ではない注入Java 5と6は、明らかにJava 7で修正されています。http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6886431 **予想される動作**:コンパイラエラー。 –

+0

これはネオンではうまくいかないようですか? –

+0

@NicholasDiPiazza私はNeon 1.aを持っていますが、これは私にとってもうまくいきません。 –

0

)Eclipseを再起動し、あなたのプロジェクトを再構築する必要があるかもしれません。

~

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

、私はバグがhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199075を修正思う

、それ以上は、それはバグだった...確かに悪い考え

+0

私は自分自身に気づいた。道徳はそうであるようであり、プリミティブ型で可変引数のパラメタに先行しないでください。私はこの問題をJunoにアップグレードしようとしていて、メソッド(int、Object [])をメソッド(Integer、Object [])に変更するとうまくいきます。コンパイラはこれを実行しようとしているので、プログラムを入手するにはほとんど代替手段がないようです。 –

関連する問題