我有const
:
public static final BigDecimal IND = BigDecimal.valueOf(1);
我想在switch
这样的语句中使用它:
int value = key.getCision().intValue();
switch (value) {
case PreEtat.IND:
//******
break;
//****
default:
break;
}
我对此行有这个错误:case PreEtat.IND:
错误:
Type mismatch: cannot convert from BigDecimal to int
答案 0 :(得分:2)
您可以尝试使用BigDecimal.intValue()
:
将此BigDecimal转换为int。这种转换类似于a 缩小原始转换从双倍缩短为短 Java语言规范:此BigDecimal的任何小数部分 将被丢弃,如果由此产生的" BigInteger"太大了,不适合 在int中,只返回低位32位。请注意这一点 转换可能会丢失有关整体规模的信息 这个BigDecimal值的精度以及返回结果 相反的标志。
答案 1 :(得分:0)
开关使用byte,short,char和int原始数据 类型。它也适用于枚举类型(在枚举类型中讨论), String类,以及一些特定的包装类 原始类型:字符,字节,短整数和整数(在 数字和字符串)。
case PreEtat.IND
中的switch
指的是BigDecimal
常量,不会编译。
您可能希望通过在int
实例上调用intValue
来初始化并测试BigDecimal
常量。
值得注意的是,您正在丢失数字的小数部分,这使得switch
中的条件测试有点奇怪。