java中switch语句常量_Java枚举:重构switch语句的常量表达式需要'编译错误?

我有一个类为我的应用程序声明常量

public class GroupConstants {

..

public static final int INTEGER_VALUE = 1;

public static final int LONG_VALUE = 2;

public static final int STRING_VALUE = 3;

..

}在代码中有一组switch语句

private static Object getValue(String stringValue, Parameter parameter) throws InvalidPatternException

{

Object result=null;

switch (parameter.getDataType())

{

case GroupConstants.STRING_VALUE: // String value

result=stringValue;

break;

case GroupConstants.INTEGER_VALUE: // Long value

case GroupConstants.LONG_VALUE:

case GroupConstants.BOOLEAN_VALUE:

case GroupConstants.DATE_VALUE:

..

}我想重构int常量值来由enum表示

public enum DataType {

UNKNOWN_VALUE(0,"unknown"),

INTEGER_VALUE(1,"integer"),

LONG_VALUE(2,"long"),

STRING_VALUE(3,"string"),

BOOLEAN_VALUE(4,"boolean"),

..

}所以我的代码可能看起来像这样

@Deprecated

public static final int INTEGER_VALUE = DataType.INTEGER_VALUE.getId();和加班我可以改变我的开关语句。当我将静态最终int引用更改为指向枚举时,所有的switch语句都会中断。

[javac] /home/assure/projects/tp/main/src/a/b/c/DDDDDManagerBean.java:1108: constant expression required

[javac] case GroupConstants.INTEGER_VALUE:

[javac] ^

[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:203: constant expression required

[javac] case GroupConstants.INTEGER_VALUE:

[javac] ^

[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:268: constant expression required

[javac] case GroupConstants.INTEGER_VALUE:

[javac] ^

[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:316: constant expression required

[javac] case GroupConstants.INTEGER_VALUE:

[javac] ^

[javac] /home/assure/projects/tp/main/src/a/b/c/ParameterComponent.java:436: constant expression required

[javac] case GroupConstants.INTEGER_VALUE:我不想被迫改变所有的开关,所以它有一个干净的工作?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值