代表Java中的常数列表



我希望从" 0"到" 1"管理static final String,以便当我遇到字符串对方时,我可以轻松地用常数替换它。目前,我能做的最好的是在班级开始时声明所有常数:

private static final String ZERO = "0";
private static final String ONE = "1";
private static final String TWO = "2";
...

但是,对于字符串,我必须检查其值(例如,如果它是" 0"到" 1"),然后用相应的常数替换它。我想知道是否有更好的方法来处理此问题?

这用作API的输入。API需要编译时间常数的字符串。例如,如果我获得的字符串为" 1",那么我将向API输入一个(是常数字符串" 1")。

是的,使用枚举。

public enum NumberValues { ONE, TWO, THREE, FOUR }  
for (Numbervalues num : NumberValues.values())  
    System.out.println(num);

输出:

ONE
TWO
THREE
FOUR

获得Enum的值

System.out.println(num.ordinal());

有关更详细的内省,请访问.https://docs.oracle.com/javase/tutorial/java/java/javaoo/enum.html

您可以像这样编写enum

enum Constants{
    ONE("1"),
    TWO("2");
    private final String value;
    private Constants(String value){
        this.value = value;
    }
    public static Constants findByValue(String value){
        for(Constants constants : values()){
            if(constants.value.equals(value)){
                return constants;
            }
        }
        return null;
    }
    public String getValue() {
        return value;
    }
}

遇到string(假设" 1")后,您可以检查是否为其定义任何枚举(使用findByValue方法),如果结果不为null,则可以替换值,例如:<<

public static void main(String[] args) throws Exception{
    String s = "1";
    Constants constant = Constants.findByValue(s);
    if(null != constant){
        s = s.replaceAll(constant.getValue(), constant.name());
    }
    System.out.println(s);
}

最新更新