言ってやるが、私はいくつかのクラスを持っているJavaの非静的な列挙型
enum Attributes {
STRENGTH, INTELLIGENCE, AGILITY...//etc
}
enum Skills {
GUNS, MELEE, ATHLETICS...//etc
}
さて、私はそれが、各インスタンスとなるようにしたかったとしましょうPlayerまたはNPCのいずれかの実際のインスタンスは、列挙型の値を加算したり減算したりすることができる独自の属性またはスキルのインスタンスを実際に持つことができます。これは可能ですか?そうでなければ、それが存在するクラスのフィールド値を操作するために、ネストされたネストされた列挙体内のメソッドを使用することは可能でしょうか?
これはややばかげてばかげて、ちょうど右のpremadonnicに聞こえるかもしれませんが、正しいデザインソリューションを見つけなければならない時には、時には箱の外で考える必要があります。
編集:私はそれがマップのアイデアと同じくらい良いことだ疑うのに
私は、興味深い解決策を見つけました。私はそれだけで投稿する興味深いものになるだろうと考え出し
:D
public final class StatControl {
int agility;
int endurance;
int intelligence;
int intuition;
int luck;
int speed;
int strength;
}
enum Attributes {
AGILITY {
void add(int value) {
test.agility += value;
}
},
ENDURANCE {},
INTELLIGENCE {},
INTUITION {},
LUCK {},
SPEED {},
STRENGTH {};
abstract void add(int value);
StatControl test;
void receiveObj(StatControl test) {
this.test = test;
}
}
あなたが見ることができるように、クラスが列挙型の整数表現を保持しているが、列挙型自身が操作できるコントロールセンターとして機能しますそれに渡されたStatControlオブジェクトのインスタンス。
地図はおそらくもっと良いですが、どこが簡単に乱れているのか分かります。
ようEnumMapsを使用することができますか? –
そして、enum名や名前空間を変更することで、似たような別々の列挙型にすることができます。つまり、それらを別々のパッケージに置くことができます。 –
別のオプションとして、同じ列挙型を使用することもできますが、異なる列挙型マップを使用して、列挙型に必要なすべての種類の値をマップできます。 –