3

Eclipse の外部 null 注釈<T> T[] toArray(T[] a)を使用して JRE メソッドに注釈を付けようとしています。期待される効果は次のようになります。java.util.Set

 public interface Set<E> extends Collection<E> {
     ...
     <T> T @NonNull[] toArray(T @NonNull[] a);
     ...
 }

Eclipse の Annotate コマンドを使用すると、メソッドの戻り値の型に適切に注釈を付けることができます ( を選択しT[]てカーソルを の前に置いた後[)。ただし、パラメーターで同じことをしようとすると失敗します。Cmd-1 を押すとビープ音が鳴り、コンテキスト メニューからコマンドを呼び出すときに [注釈] を選択すると、ビープ音が鳴ります。

最終的に、対応するSet.eeaファイルを手動で編集して、必要な注釈を定義し、適切なeea ファイル レイアウトを処理することになりました。つまり、次の annotatedSignature を変更しました。

class java/util/Set
toArray
 <T:Ljava/lang/Object;>([TT;)[TT;
 <T:Ljava/lang/Object;>([TT;)[1TT;

 <T:Ljava/lang/Object;>([1TT;)[1TT;

これは正常に機能し、注釈はコンパイラによって正しく処理されます。

戻り値の型には注釈を付けることができますが、パラメーターの型には注釈を付けることができないため、何が間違っているのか疑問に思っています。それとも、これは現在の Eclipse バージョンの制限ですか?

Eclipse Mars リリース (4.5.0、ビルド ID: 20150621-1200) と jdk1.8.0_60 を使用しています。

4

1 に答える 1

2

これは確かにバグです。これを追跡するためにhttps://bugs.eclipse.org/477461を提出しました。

これはバグ 464081であり、4.6 M1 で修正され (つまり、Eclipse Neon 向けの現在のビルドで利用可能)、現在 4.5.2 (Mars.2) で提案されています。

于 2015-09-15T14:56:05.227 に答える