7 Réponses :
Qu'essayez-vous d'accomplir? C'est un moyen de renvoyer un mais, je suppose que ce n'est pas ce que vous allez? P> p> Enum code>:
En fait, je ne veux pas de ce code; Semble comme une chose étrange de faire du tout :)
Oui, c'est certainement possible. Si votre question concerne déclarer em> Enums, vous pouvez les déclarer: p>
de niveau supérieur code>; li>
statique code>; li>
ul> p>
Pas totalement sûr de ce que votre objectif est, mais si vous vouliez renvoyer une méthode générée (c'est-à-dire qui serait remplacé), vous pouvez avoir quelque chose comme ce qui suit:
public class MyEnumClass<T extends Enum<T>> { public T resources() { //do stuff here } }
Vous pouvez vous référer à une valeur d'un énumé par son nom, par exemple. Costume.spades. P>
Vous pouvez itérer sur toutes les valeurs en utilisant la méthode Valeurs () et choisissez l'une des valeurs. P>
Tous les Enums implémentent l'interface Enum, afin que vous puissiez certainement écrire une méthode qui renvoie une énumération de cette façon. Mais cette méthode reviendra une seule valeur enum. Il n'ya aucun moyen de retourner une valeur générique qui englobe toute l'énumérum (en dehors de le retour de la classe et de la réflexion). Vous pouvez cependant renvoyer toutes les valeurs ENUM qui sont plus ou moins ce que vous voulez, je pense.
public interface Resources {} enum SomeResources implements Resources { ONE, TWO, THREE } enum MoreResources implements Resources { UN, DEUX, TROIS } private Resources[] resources() { List<Resources> resources = new ArrayList<Resources>(); resources.addAll(Arrays.asList(Resources.values()); resources.addAll(Arrays.asList(MoreResources.values()); return resources.toList(new Resources[] {}); }
Le point de vue de la façon dont Java est enums, c'est qu'ils sont Typeafe - de sorte que vous ne retourneriez pas un énumé (qui serait double-plus non gagnant), vous retournez le type réel que vous définissez (comme "costume") qui agit comme une classe. Costume a 4 instances "énumérées".
Si vous attendiez un "costume", à quoi sert-il de retourner un "rang" de 7? Cela briserait tout! P>
Également si vous avez passé une "Enum" ou une valeur générique, vous ne pouvez pas appeler des méthodes dessus. La chose la plus cool à propos de Typeafe Enums est que vous pouvez simplement obtenir un "costume" et appeler "costume.getcolor ()" et s'attendre pleinement à obtenir la couleur de cette combinaison. Vous pouvez également avoir un classhigherthan (costumes) qui pourrait remplir: p> ou, plus important encore: p> ( En supposant qu'ils ont été tous deux passés et que vous ne savez pas ce qu'ils sont) p> La sécurité est vraiment incroyable (même si cela ressent un peu mal à l'aise au début), embrasse-le. P> P> P> P >
Je pense que vous êtes correct, il ne sera possible que de retourner Plus tard, vous l'invoquez en spécialisant le constructeur générique et en passant dans la classe Enum qui vous intéresse : p> (évidemment c'est un exemple artificiel et dans la vie réelle, vous devriez simplement appeler foo.values (), mais vous obtenez l'idée.) p> p> null code> ou un
enum code> déclaré ailleurs. Mais vous n'avez pas nécessairement de préciser que "quelque chose d'autre" lors de la compilation de compilation.
Pouvez-vous s'il vous plaît ajouter comment utiliser cette classe?
p.s. Pour obtenir la gamme de valeurs, vous pouvez simplement faire valeurs = Enumclass.getenumConstants () code>
Comme je l'ai dit, c'est un exemple artificiel. :)
Vous souhaitez renvoyer un
Enum code> type ou un
Enum code> Valeur?
Je ne suis pas sûr que le titre de la question est le plus approprié. Que veux-tu réellement faire?
Désolé pour la confusion, et je pouvais certainement me tromper dans ce que j'essaie de faire de l'accouchement (ma pensée commence à aller avec elle en fin d'après-midi) mais je pensais que je voudrais peut-être avoir une méthode renvoyer une éducation générique pas I> Un membre d'un énumé.
Vous ne pouvez pas faire cela, mais vous pouvez retourner toutes les valeurs d'un énumé.