5

MongoDB ドキュメントに任意の数を格納するフィールドがあります。DBObject (MongoDB の Java ドライバー) として取得すると、ClassCastException が発生することがあります。

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

格納されている値numericValが 1234567890 の場合、Long へのキャストは成功します。たとえば 12345 の場合、DBObject.get() は Double を返し、キャストは失敗します。

MongoDB DBObject を逆シリアル化するときに、どのようにタイプ セーフを確保できますか?

4

2 に答える 2

5

キャスト (Long) ではなくタイプ セーフな getLong( String key ) を使用することで ClassCastException を回避できると思います。

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 になることに懐疑的です。ここで別のことが起こっています。

于 2012-09-06T17:45:30.943 に答える