コレクションにnullメンバーがなく、@ NonNullアノテーションを持つ型を返すことを検証する汎用関数をJava8で実装したいと考えています。コレクションに@NonNullを持つJava汎用コレクション
入力の種類:T extends Collection、T + UはNULL可能です。
結果型:@NonNull Tは、@NonNull U
と配列については、これは次のようになります。
public static <T> @NonNull T @NonNull[] arrayHasNoNullMember(@Nullable T @Nullable[] value) {
しかし、コレクションケースのために、私はその結果の型を定義する方法がわかりません入力型と同じですが、コレクションと要素タイプの@NonNullアノテーションがあります。
これは私が何をしたいのかであるが、それは有効な構文ではありません。
public static <T extends Collection<U>, U> @NonNull T<@NonNull U> collectionHasNoNullMember(T<U> col) {
あなたは助けることはできますか?
したがって、@ NonNullを取得する機会はありません。 – fbenoit
戻り値の型の前で、その注釈がTYPE_USE用に構成されている場合は、パラメータ型の前に挿入することができます。試すだけの価値があります。 –
ここで重要な点は、パラメータにはコレクションの@ NonNullがなく、その要素タイプではないということです。そして帰国の際には両方ともそれを持っているはずです。はい、@ NonNullはTYPE_USEのために作られています。 – fbenoit