java - 对于 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(),它确实很长。
解决方案
嗯,v
已经是一个Integer
而不是一个int
。
这取决于您的setInt
和getValue
方法是如何实现的,但无论如何,v
不能int
在下面的行中:
Object v = doc.getValue(i);
那是因为 anint
不能存储到 anObject
中,因为 anint
是原始类型。相反,它被自动装箱为Integer
.
顺便说一句,由于getValue
可以String
根据您的代码返回判断,因此它也不能返回原始类型。所以getValue
必须返回一个Object
. 当方法返回时,曾经是 an 的值int
保证会自动装箱到 anInteger
中。
推荐阅读
- node.js - 使用 vim-plug 在 vi 中安装 coc.vim 时出现问题
- xunit.net - C# Akka.Net 单元测试哪个内置断言是正确的等待发布的消息?
- javascript - 添加异步等待以获取 javascript
- python - 如何从 python-socketio 获取返回值到 PYQT5
- bpmn - formsflow.ai 中未生成应用程序历史记录
- r - 如何创建一个 For-Loop 来编辑位于给定文件夹中的所有文本文件?
- java - 对象创建优化
- python - 在 Google Colab 中安装 MEEP
- python - asyncio任务完成后添加回调,而不是asyncio.as_completed?
- php - 如何将 Manticore 搜索连接到 Apache Nutch 爬网结果文件夹?