首页 > 解决方案 > 对于 Object 中的数字,instanceOf Integer 失败

问题描述

我有这个从函数中获得的可变文档……内容未知。但为简单起见,我正在创建一个示例文档:

     MutableDocument doc = new MutableDocument();
     doc.setString("l", "j");
     doc.setInt("v", 20);
      
     List<String> keys = doc.getKeys();
     for(i = 0; i< 2; i++){
        Object v = doc.getValue(i);
        if (v instanceOf String){
         //finds l correctly
         }else if (v instanceOf Integer){
             //nothing happens here
           }
      }

从此:int instanceof Integer,我注意到 int 不是 Integer 但我将如何处理上述情况?

更新:谢谢大家。我刚刚做了 value.getClass(),它确实很长。

标签: java

解决方案


嗯,v已经是一个Integer而不是一个int

这取决于您的setIntgetValue方法是如何实现的,但无论如何,v不​​能int在下面的行中:

Object v = doc.getValue(i);

那是因为 anint不能存储到 anObject中,因为 anint是原始类型。相反,它被自动装箱为Integer.


顺便说一句,由于getValue可以String根据您的代码返回判断,因此它也不能返回原始类型。所以getValue 必须返回一个Object. 当方法返回时,曾经是 an 的值int保证会自动装箱到 anInteger中。


推荐阅读