我希望从" 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);
}