[英]java enum with enum in constructor
是否可以讓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
}
而不是這個:
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
。
沒問題:
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;
}
}
是的,看看這個:
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.