3

Javaの列挙型に引数として列挙型のセットをとらせることは可能ですか?はいの場合、どうすれば実装できますか?

これを使用するときは、次のように言うことができるようにしたいと思います。MODAL_SETTINGS.EDIT_MODAL_WINDOWを取得し、MODAL_BUTTONS.SAVEおよびMODAL_BUTTONS.CANCELボタンを使用してこれを作成します。

これは私が今持っているものです

public enum MODAL_SETTINGS {
    NEW_MODAL_WINDOW(MODAL_BUTTONS.class),
    EDIT_MODAL_WINDOW(MODAL_BUTTONS.class),
    DELETE_MODAL_WINDOW(MODAL_BUTTONS.class);

    private EnumSet buttons;

    private MODAL_SETTINGS(EnumSet<MODAL_BUTTONS> buttons){

    }

}
public enum MODAL_BUTTONS {
    SAVE, UPDATE, CANCEL, DELETE
}
4

3 に答える 3

12

これの代わりに:

NEW_MODAL_WINDOW(MODAL_BUTTONS.class),

私はあなたがこれを望んでいると思います:

NEW_MODAL_WINDOW(EnumSet.allOf(MODAL_BUTTONS.class))

また

NEW_MODAL_WINDOW(EnumSet.of(MODAL_BUTTONS.SAVE, MODAL_BUTTONS.CANCEL))

(等)。

Class<T>それ以外の場合は、ではなくを渡すだけですEnumSet

于 2011-05-06T10:26:16.503 に答える
10

問題ない:

enum Color {YELLOW, BLUE, GREEN}

enum Environment { 
     SUN(Color.YELLOW), OCEAN(Color.BLUE), TREE(Color.GREEN);

     private Color color;
     private Environment(Color color) {
       this.color = color;
     }
     public Color getColor() {
       return color;
     }
}
于 2011-05-06T10:47:05.620 に答える
2

はい、これを見てください:

import java.util.EnumSet;
public class EnumTest {
public static enum MODAL_BUTTONS {
    SAVE, UPDATE, CANCEL, DELETE
}
public static enum MODAL_SETTINGS {
    NEW_MODAL_WINDOW(EnumSet.of(MODAL_BUTTONS.SAVE, MODAL_BUTTONS.UPDATE)),
    EDIT_MODAL_WINDOW(EnumSet.of(MODAL_BUTTONS.UPDATE, MODAL_BUTTONS.CANCEL)),
    DELETE_MODAL_WINDOW(EnumSet.of(MODAL_BUTTONS.CANCEL, MODAL_BUTTONS.DELETE));

    private EnumSet<MODAL_BUTTONS> buttons;

    MODAL_SETTINGS(EnumSet<MODAL_BUTTONS> buttons){
        this.buttons = buttons;
    }
    EnumSet<MODAL_BUTTONS> getBtns() {
        return this.buttons;
    }
}
    public static void main(String... args) {
        System.out.println(MODAL_SETTINGS.NEW_MODAL_WINDOW.getBtns());
        System.out.println(MODAL_SETTINGS.EDIT_MODAL_WINDOW.getBtns());
        System.out.println(MODAL_SETTINGS.DELETE_MODAL_WINDOW.getBtns());
   }
}

出力は次のとおりです。

[SAVE, UPDATE]
[UPDATE, CANCEL]
[CANCEL, DELETE]
于 2011-05-06T10:57:11.317 に答える