Je veux implémenter une fonction générique dans Java8, qui vérifie qu'une collection n'a aucun membre nul et renvoie un type avec l'annotation @NonNull.Java générique avec le type de retour qui a @NonNull avec les collections
Type d'entrée: T extends Collection, où T + U ne peuvent pas être utilisés.
type de résultat: @NonNull T, avec @NonNull U
Array cela ressemblerait à ceci:
public static <T> @NonNull T @NonNull[] arrayHasNoNullMember(@Nullable T @Nullable[] value) {
Mais pour le cas de collecte, je ne sais pas comment définir le type de résultat est identique au type d'entrée, mais possède les annotations @NonNull pour la collection et le type d'élément.
C'est ce que je veux faire, mais il n'est pas une syntaxe valide:
public static <T extends Collection<U>, U> @NonNull T<@NonNull U> collectionHasNoNullMember(T<U> col) {
Pouvez-vous aider?
Il n'y a donc aucune chance d'obtenir le @NonNull? – fbenoit
Vous pouvez le faire glisser avant le type de retour et avant le type de paramètre, si cette annotation est configurée pour TYPE_USE. Ça vaut le coup d'essayer. –
Le point ici est, que le paramètre n'a pas @ NonNull pour la collection et pas pour le type de ses éléments. Et au retour, les deux l'auront. Oui, @ NonNull est fait pour TYPE_USE. – fbenoit