の2種類のいずれかから:インスタンス化EnumSetの私は、これら2つの列挙型は、そのように宣言してい列挙
public enum EnumOne implements EnumInterface {
SomethingHere,
SomethingThere;
public void someMethod() { }
}
public enum EnumTwo implements EnumInterface {
SomethingOverYonder;
public void someMethod() { }
}
をここに見られるように、両者は、このインターフェイスを実装します。
public Interface EnumInterface {
someMethod();
}
私はEnum1またはEnum2のいずれかからすべての要素を取得しますEnumSetのが含まれ、ここで定義したクラスを持っています。これは、インデックスをパラメータとして持つメソッドによって定義されます。このような何か:
public class SomeClass {
private EnumSet someEnum;
public void setEnumType (int index) {
switch (index) {
case 1:
someEnum = EnumSet.allOf(EnumOne.class);
break;
case 2:
someEnum = EnumTwo.allOf(EnumTwo.class);
break;
}
}
}
さて、私は何とかこれを達成するためにジェネリックを使用する必要があります知っているが、私はそれに十分慣れていないよので、私は正確にどのように行うのか分からないと私は願っていますあなたは私に少し啓発することができます。
ご回答いただきありがとうございます。
Btw列挙型は変数名として使用できません。 – Mordechai
@MouseEvent注釈をお寄せいただきありがとうございます。私はそれを編集しますが、私がやりたいことのアイデアはまだまだよく分かります。 – ShadowGeist
後でEnumSet固有のメソッドを使用したい場合は、 'someEnum'宣言に適切な型パラメータを持てないので動作しません。単純に 'Set'として使うのであれば、' Set someEnum =新しいHashMap <>(EnumSet.allOf(EnumOne.class)); '。しかし、私はそれが基本的にデザインに間違っていると感じています...あなたはこのようなことをしたい理由を教えてください。 –