J'essaie de trouver une manière compliquée d'obtenir mes valeurs enum complexes. Disons que nous avons quelque chose comme ceci:Créer des "enums composés" en Java
enum Country
{
USA, UK;
}
enum Person
{
ALICIA, BOB, CEDRICK,
USA_ALICIA, USA_BOB, USA_CEDRICK,
UK_ALICIA, UK_BOB, UK_CEDRICK;
}
Je voudrais avoir un mécanisme simple et court de quelque chose comme le moulage. Si country
est Country.UK
, (country)Person.BOB
doit contenir la valeur Person.UK_BOB
. Des idées pour y parvenir?
EDIT: nouvelle idée Je ne vois pas d'autre solution, car il existe différents Alicias des Etats-Unis et du Royaume-Uni et ils ont des propriétés différentes. Que diriez-vous à ce sujet?
enum Country { USA, UK; } enum Person { ALICIA, BOB, CEDRICK, USA_ALICIA, USA_BOB, USA_CEDRICK, UK_ALICIA, UK_BOB, UK_CEDRICK; public Person from (Country country) { return Person.valueOf (country.toString().toUpperCase() + "_" + this.toString().toUpperCase()); } } // and the usage: Person.BOB.from(country);
Pourquoi avez-vous besoin que ce soit une énumération? Pourquoi pas une combinaison de ces deux enums? – Thilo
C'est une partie de mon jeu. J'ai une classe qui gère les textures de divers comportements pour diverses créatures. Chaque type de comportement a sa propre enum appelée 'BehaviourType'. Et chaque créature a son propre ensemble de tels enums. En fonction de ce que la créature est, je voudrais juste écrire '(créature) BehaviourType.IDLE' – user3572544
@ user3572544 J'appellerais cela un abus complet de la syntaxe même si vous pouviez le faire fonctionner; Je ne voudrais certainement pas travailler sur le code avec autant de connaissances cachées et de syntaxe confuse. Sois juste explicite. L'organisation des données fait partie des classes pour lesquelles elles ont été conçues. Avoir une classe avec quelques données d'instance; tout le reste essaie juste de réinventer la roue. – jpmc26