Pour la méthode getFirstFromEnum
ci-dessous, il est toujours vrai que le type enum
renvoyé est la classe transmise en tant qu'argument. Considérant cela, est-ce que de toute façon je pourrais changer la méthode pour éviter de lancer à chaque fois que je l'appelle?Comment éviter le cast avec des valeurs de retour génériques?
private <E extends Enum<?>> Enum<?> getFirstFromEnum(Class<E> enumClass) {
return enumClass.getEnumConstants()[0];
}
EnumA foo = (EnumA) getFirstFromEnum(EnumA.class); //can I change method to avoid casting?
Pourriez-vous essayer de me expliquer la nécessité de remplacer '>' 'avec >'. Ils semblent tous deux travailler –
user2651804
Hmmm .. Honnêtement, je ne sais pas. J'ai l'habitude de taper autant que possible. Mais vous avez raison: ici, ce n'est pas nécessaire. Cela ressemble à du sucre syntaxique. J'ai mis à jour pour garder cette partie comme elle était. – davidxxx
@ user2651804: ceci se résume à la question de savoir pourquoi 'java.lang.Enum' a été défini comme' Enum> 'au lieu de' Enum > 'ou simplement' Enum '. Au premier coup d'œil, il semble y avoir une certaine importance, mais en réalité, cela fonctionnerait parfaitement sans. Comme démontré par 'java.lang.Comparable' qui a été défini comme' Comparable 'au lieu de' Comparable > '... –
Holger