2011-05-06 169 views
3

是否有可能讓一個枚舉的枚舉作爲參數在java中的枚舉?如果是的話,那我該如何執行它?Java枚舉與枚舉在構造函數

當使用這個我whant能夠這樣說:乘坐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 
} 
+1

這是不是真的有關,但正常的命名約定類(包括枚舉類型)是使用CamelCase(即使枚舉常量本身使用UPPER_CASE)。 – Daniel 2011-06-29 23:58:44

回答

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

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; 
    } 
} 
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]