[英]How to add two Integer classes(instanceof)
我已经实现了这种方法:
public static Object findInstance(Object value);
方法采用对象值并将类类型(如果可能)转换为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()吗?
关于此的一些评论:首先,azurefrog陈述了正确的原因:您的变量属于Object类型,而不是Number类型。
第二:如果要在对象上有条件地调用intValue()或doubleValue(),请让您的方法返回Number类型而不是Object类型的变量。
第三:我不知道您正在执行的任务,因此您可能有充分的理由这样做。 但是,尝试以不需要任何类型的强制转换操作或instanceof调用的方式编写代码。 通常,这些操作的出现是“设计气味”的迹象。 在您的情况下可能并非如此,但在我并非总是如此谦虚的观点中,这似乎有些可疑。
请注意,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();
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.