9

次のように、mongo カーソル オブジェクトから int を取得しています。

DBObject mapObj = cursor.next();
int autostart = (int) (double) (Double) mapObj.get("autostart");

整数にするためにトリプルキャストしなければならないのは奇妙に思えますが、もっと良い方法はありますか?

4

3 に答える 3

17

あなたが本当に探しているのは次のようなものだと思います。

DBObject mapObj = cursor.next();
int autostart = ((Number) mapObj.get("autostart")).intValue();

文字列への変換は行われず、値が元の整数値から(精度が失われる可能性がある)DoubleまたはLongに変換されても安全です。Double、Long、およびIntegerはすべてNumberを拡張します。

HTHロブ

于 2013-03-05T04:09:33.133 に答える
5

また、次の方法でも実行できます。

int autostart = Integer.valueOf(mapObj.get("autostart").toString());

最後のコメントについて:

double が必要な場合は、これを使用します。

int autostart = Double.valueOf(mapObj.get("autostart").toString());

しかし、その意味は何ですか?あなたはむしろ持つことができます:

double autostart = Double.valueOf(mapObj.get("autostart").toString());

于 2013-03-04T15:43:18.567 に答える
2

はい、必要なキャストは 1 つだけです。

double autostart = (Double) mapObj.get("autostart");
于 2013-03-04T15:42:50.433 に答える