java - MongoDB/Java : Type safety in DBObjects

标签 java mongodb types deserialization

我在 MongoDB 文档中有一个字段,该字段存储了一个任意大的数字。当我将它作为 DBObject(MongoDB 的 Java 驱动程序)检索时,有时会遇到 ClassCastException:

DBObject obj = collection.findOne();
long val = (Long)(o.get("numericVal"));

如果 numericVal 中存储的值是 1234567890,则转换为 Long 成功。如果是 12345,则 DBObject.get() 返回一个 Double,并且转换失败。

在反序列化 MongoDB DBObjects 时如何确保类型安全?

最佳答案

我认为您可以通过使用类型安全的 getLong(String key) 而不是强制转换 (Long) 来避免 ClassCastException,并希望自动装箱能够正确地让您减少到小“l”长。

http://api.mongodb.org/java/2.8.0/org/bson/BasicBSONObject.html#getLong(java.lang.String )

DBObject obj = collection.findOne();
long val = o.getLong("numericVal");

我也对 12345 成为 Double 持怀疑态度。这里还有其他事情发生。

关于java - MongoDB/Java : Type safety in DBObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12305408/

相关文章:

java - 有没有一种通用的文件访问方式,既适用于 Android 也适用于 PC?

jquery 改变输入类型

haskell - 使用 Haskell 的类型系统来指定一个类服从额外的属性(即类型类的类型类)

c++ - 如何检查 C++ 字符串是否为 int?

java - Maven 生成源/注释

java - 将文件夹压缩成 ZipFile

java - 通过多次递归调用持久保存信息

node.js - 如何将 MongoDB 结果放入异步回调中

node.js - 使用 Mongoose 重复​​项目

java - 使用 MongoDB 在 Java 中计算距离