java - 如何添加两个Integer类(instanceof)

标签 java 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 的方式编写代码。通常,这些操作的存在是“设计味道”的标志。可能不是你的情况,但在我并不总是那么谦虚的观点中,这似乎有点可疑。

关于java - 如何添加两个Integer类(instanceof),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121270/

相关文章:

java - GWT Browser在Client中的区别

java - 在 Android 中将 LatLng 偏移一定量的米

java - AHK 使用 getElementByID 查找/选择元素

javascript - if instanceof 具有特殊字符的对象

java - 一些java泛型问题

java - 使用 ng-file-upload 和 Spring Boot 上传文件

java - Spring Boot 中一秒 session 超时

java:结合了instanceof和cast?

Java:使用instanceof暴露不同的对象方法

javascript - 为什么 TypeScript 中的 'instanceof' 给我错误 "' Foo' only references a type, but is being used as a value here."?