J'ai 2 classes d'énum: et p> et maintenant j'ai une méthode dans une autre classe où je Voulez-vous passer enum enum comme un paramètre, je pourrais donc choisir l'une d'entre eux selon mes besoins. p> donc au lieu de fournir des "chiens" codés, je veux avoir un choix et Passez le paramètre sur la méthode, quelque chose comme p> mais cela n'accepte pas comme ça. Est-il possible de passer type générique comme "Enum"? P> P>
3 Réponses :
Je suggérerais que vous ayez quelque chose comme ceci (code très simplifié pour le faire court): < / p> Notez que de nombreux exemples / didacticiels qui utilisent une classe comme Enum code> est la la classe em> la classe tous em> énumérations de em>
Enum.values () code> ne fera rien . Si vous souhaitez utiliser plusieurs Enums, vous pourriez leur avoir implémenter une interface commune, mais même alors vous auriez besoin de fournir les instances. Ceci pourrait être fait par réflexion, mais je me sens en train de vous remettre que le pouvoir serait maintenant une recette pour la catastrophe. En général, Enums sont destinés à des types statiques tels que
AnimalType Code> et non pour des instances individuelles comme un chat spécifique.
animal code> se concentrent davantage sur héritage, c'est-à-dire
la classe chat étend l'animal code> etc. La lecture entre les lignes de votre question me fait sentir que c'est ce que vous êtes en fait après, pas comment utiliser Enums. p> p>
Ce que vous avez essayé ne fonctionne pas en grande partie parce que Si vous avez absolument avoir em> pour le faire avec des chiens code> séparés code> et puis la méthode serait simplement: p> si si em> n'est pas Convient à une raison quelconque, il est également possible d'utiliser La méthode serait le long de ces lignes: p> (merci Pshemo pour indiquer que ma version antérieure pourrait être simplifiée nettement utiliser Enum code>, elle-même, ne dispose pas de valeurs code> code>. C'est une méthode statique implicite des classes d'enum.
chats code> énumjets plutôt que Ce faisant la façon dont Thomas suggère , vous pourriez passer à la suite de Calling
Valeurs CODE>: p>
classe.getenumConstants code>
: plutôt que de passer dans chiens code> ou
chats code>, vous passeriez dans leur classe: p>
getenumConstants code>.) p> < / p>
Pas tout à fait sûr exactement ce que vous voulez faire dans cette méthode, mais vous pouvez faire quelque chose comme ça.
Votre Enums peut implémenter une interface commune. Que voulez-vous faire à l'intérieur de la boucle?
Dupliqué possible de Comment mettre en œuvre Enum avec des génériques?
Cela semble être une mauvaise utilisation fondamentale d'Enums. Je m'attendrais à chacun des chants, éponge, etc. d'être des objets d'une classe, pas d'énormes membres.
@Benr. R. Peut-être que j'ai fourni de mauvais exemples de valeurs, mais j'ai besoin des valeurs de chaîne et non des objets d'une classe. Ces noms ne changeront pas et seront utilisés dans de nombreux endroits dans l'application / code. C'est pourquoi j'en ai besoin d'être constant.
@Klitoskyracou dans 'for Loop' Je ferai quelque chose comme ceci: INPUT.TYPENAME (animal.getName ()) Si (une condition) {String NewName = animal.getName (); Pause; }