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 を使用しています。