我在 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/