2014-02-25 121 views
2

静态变量存在一个类,定义一组常数作为这样访问使用枚举

public class CritterCode { 

    public static String KITTY = "KT"; 
    public static String PUPPY = "PP"; 
} 

我已经创建了将在组合框被用于枚举。

public enum Critter { 
    KITTY, 
    PUPPY 
} 

给定一个Critter,我想获得相应的CritterCode

是否可以在不写重复代码的情况下完成此操作?

+0

使用一个EnumMap的:https://stackoverflow.com/a/12669569/2591612 – Brian

+0

请在枚举和一个构造函数的字符串域,并作出类似的东西KITTY (“KT”),PUPPY(“PP”) – pL4Gu33

回答

7
public enum Critter { 
    KITTY(CritterCode.KITTY), 
    PUPPY(CritterCode.PUPPY) 

    private final String code; 

    private Critter(String code) { 
     this.code = code; 
    } 

    public String getCode() { 
     return code; 
    } 
} 
7

像这样做,

public enum Critter { 
    KITTY("KT"), 
    PUPPY("PP"); 

    private String code; 
    Critter(String code) { 
     this.code = code; 
    } 

    public String getCode() { 
    return this.code; 
    } 
} 

这样你就可以摆脱的CritterCode

+0

你应该使用'static'变量作为@JBNizet所做的 - 我不认为这个答案符合_without编写重复code_条件的条件 –

+0

没有重复的代码,这样使用'CritterCode'毫无意义 – Camilo

+0

假设'CritterCode'不能修改并在其他地方使用,如果其中一个String无论出于何种原因,这些变化都需要复制到“Critter”中。 –

1

使用枚举性能

public enum Critter { 
    KITTY("KT"), 
    PUPPY("PP"); 

    String critterCode; 

    public Critter(String critterCode) { 
     this.critterCode = critterCode; 
    } 

    public String getCritterCode() { 
     this.critterCode; 
    } 
}