我已实施此方法:
public static Object findInstance(Object value);
Method获取对象值并将类类型(如果可能)转换为Integer或Double。 在调用findInstance之后,我想检查我的类类型,如下所示:
value.getClass();
结果是java.lang.Double或java.lang.Integer。(正如预期的那样)
但是我无法在该对象上调用Integer(或Double)类中的任何方法。
最终结果应为:
value1=findInstance(value1);
value2=findInstance(value2);
int sum=value1.intValue()+value2.intValue();
System.out.println("Sum:"+sum);
有人可以解释为什么我不能调用方法intValue()?
答案 0 :(得分:2)
对此有一些评论:
首先,azurefrog说明了正确的原因:你的变量是Object类型,而不是Number类型。
第二:如果要在对象上有条件地调用intValue()或doubleValue(),请让您的方法返回Number类型的变量而不是Object类型的变量。
答案 1 :(得分:0)
请注意,BigDecimal,BigInteger,Byte,Double,Float,Integer,Long,Short实现Number接口(这些类将传递is-a Number测试),因此您不必使用它们的“findInstance”。您可以使用数字界面:
if(obj instanceof Number) {
Number number = (Number) obj;
int value = number.intValue();
...
}