此代码应该在第一次返回Long。但它返回一个Double。它必须是基本的东西,但我无法找到它。 (在调试器中,使用evaluate a line命令,它按预期工作。)
我错过了什么?
import java.math.BigDecimal;
public class WeirdResult {
public static void main(String[] args) {
Number num = valueOf("1");
System.out.println("this first one should be a Long");
System.out.println("1 - class = " + num.getClass() + ", value = " + num);
num = valueOf("1.0");
System.out.println("1.0 - class = " + num.getClass() + ", value = " + num);
}
public static Number valueOf(String strNumber) {
Number num = isUseDecimal() ? new BigDecimal(strNumber) :
(strNumber.indexOf('.') == -1 ? Long.valueOf(strNumber) : new Double(strNumber));
return num;
}
private static boolean isUseDecimal() {
return false;
}
}
输出结果为:
这第一个应该是Long
1 - class = class java.lang.Double,value = 1.0
1.0 - class = class java.lang.Double,value = 1.0
我希望它是:
这第一个应该是Long
1 - class = class java.lang.Long,value = 1
1.0 - class = class java.lang.Double,value = 1.0