2

Eclipse の外部アノテーションを使用してメソッドにアノテーションを付けようとしjava.util.List.toArrayていますが、戻り値の型にアノテーションを付ける方法がわかりません。リストに次の署名がある場合:

@NonNull List<@NonNull Element>

List.toArray は以下を返す必要があります。

@NonNull Element @NonNull[]

ただし、リストに null 許容要素を含めることができる場合:

@NonNull List<@Nullable Element>

List.toArray も、null 許容要素を含む配列を返す必要があります。

@NonNull Element @Nullable[]

私は Eclipse Neon を使用していますが、これは可能ですか? Eclipse Neon New and Noteworthy ページはList.get() の例を提供しているようで、値の nullity を省略する必要があることを示唆していますが、それは配列では機能しないようです? 私が使用している外部注釈定義は次のとおりです。

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

しかし、これはうまくいきません:

    @NonNull
    List<@NonNull String> collect = // works
    @NonNull
    String @NonNull [] array = collect.toArray(new String[0]);

collect.toArrayエラーとしてマークされています:

Null 型の安全性 (型注釈): 型 'String[]' の式は、'@NonNull String []' に準拠するために未チェックの変換が必要です

どうすればこれを修正できますか? これは Eclipse Neon でも動作しますか?

4

1 に答える 1