我已经实现了这个方法:
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 的方式编写代码。通常,这些操作的存在是“设计味道”的标志。可能不是你的情况,但在我并不总是那么谦虚的观点中,这似乎有点可疑。
关于java - 如何添加两个Integer类(instanceof),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121270/