2013-03-04 5 views
8

Ich bin wie so ein int von einem Mongo Cursor-Objekt ziehen:Einfachste Möglichkeit, ein int aus einem Mongo-Ergebnis zu erhalten?

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

Es scheint seltsam, dass ich zu verdreifachen Besetzung habe es auf eine ganze Zahl zu bekommen, gibt es eine Möglichkeit, besser?

+0

Nur um zu verdeutlichen, Autostart stellt einen ganzzahligen Wert, nicht Fließkomma. Ob ich es hier oder anderswo mache, irgendwann wird die Zahl, die von Mongo zurückkommt, irgendwann als Int benutzt. – justkevin

Antwort

2

Ja, Sie brauchen nur eine Besetzung.

double autostart = (Double) mapObj.get("autostart"); 
+1

Das gibt mir eine Laufzeitausnahme "java.lang.ClassCastException: java.lang.Double kann nicht in java.lang.Integer umgewandelt werden". – justkevin

+0

Nun, Sie brauchen ein Doppel dann! – user

+0

@justkevin Ihre Variable "Autostart" ist vom Typ double. Ich habe den Code aktualisiert. – poitroae

3

Auch können Sie es auf diese Weise tun:

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

In Bezug auf Ihre letzte Bemerkung:

Wenn Sie doppelt möchten, verwenden Sie diese:

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

Aber was ist das für ein Sinn? Sie könnten vielmehr haben:

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

+0

Konvertieren einer Zahl in String und zurück ist sehr ineffizient. – rustyx

13

Ich denke, was Sie wirklich suchen so etwas wie dieses:

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

keine Konvertierung in einen String und es ist sicher, wenn der Wert auf ein umgewandelt wird Double oder Long (mit dem möglichen Verlust der Genauigkeit) vom ursprünglichen Integer-Wert. Double, Long und Integer erweitern die Nummer.

HTH Rob

Verwandte Themen