Je construis une bibliothèque Java pour un client, et l'une des choses qu'ils veulent est une représentation de données d'un ensemble particulier de normes avec lesquelles ils travaillent. Je ne veux pas révéler les intérêts de mon client, mais s'il était un alchimiste, il pourrait vouloir les éléments suivants:Comment construire une structure de données immuable complexe et hiérarchique en Java?
Elements
Fire
Name="Fire"
Physical
Temperature=451
Color="Orange"
Magical
Domain="Strength"
Water
Name="Water"
Physical
Color="Blue"
Earth
Name="Earth"
Magical
Domain="Stability"
Ordinality=1
Je dois être en mesure d'accéder à divers éléments de données par nom, tels que:
Elements.Earth.Name
Elements.Water.Physical.Color
Je dois aussi pouvoir itérer attributs, comme:
for (MagicalType attrib : Elements.Fire.Magical)
{
...
}
J'ai effectivement été en mesure de créer cette structure de données, et je peux faire tout ce que j'ai demandé ci-dessus - si je devait créer des tableaux séparés pour l'itération, donc vraiment ce que je fais ressemble plus:
for (MagicalType attrib : Elements.Fire.MagicalAuxArray)
Malheureusement, je ne l'ai pas été en mesure de répondre à ma dernière exigence: l'ensemble de la structure de données doit être immuable. J'ai essayé à plusieurs reprises, et parcouru le web à la recherche d'exemples, mais jusqu'à présent, je n'ai pas été en mesure d'accomplir cela de manière raisonnable. Notez que la structure de données finale sera assez grande; J'espère vraiment éviter une solution trop répétitive ou créer trop de symboles publics. Je suis un programmeur très expérimenté, moins expérimenté avec Java. Quelqu'un peut-il suggérer comment je pourrais représenter les données ci-dessus pour répondre à toutes mes exigences?
+1 Pour l'exemple d'alchimie. Bienvenue à SO! – NullUserException