2013-03-04 10 views
8

ja ciągnąc int od kursora obiektu Mongo tak:Najprostszy sposób na pobranie int z wyniku mongo?

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

Wydaje się dziwne, że muszę potrójnej obsadzie aby zmusić go do liczby całkowitej, czy istnieje lepszy sposób?

+0

Aby wyjaśnić, autostart reprezentuje wartość całkowitą, a nie zmiennoprzecinkowy. Niezależnie od tego, czy zrobię to tutaj, czy gdzie indziej, ostatecznie liczba, która wróci z Mongo, zostanie ostatecznie wykorzystana jako int. – justkevin

Odpowiedz

2

Tak, potrzebujesz tylko jednego rzutu.

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

To daje mi "java.lang.ClassCastException: java.lang.Double nie można rzutować na wyjątek środowiska wykonawczego java.lang.Integer". – justkevin

+0

Cóż, potrzebujesz podwójnego! – user

+0

@justkevin Twoja zmienna "autostart" jest typu double. Zaktualizowałem kod. – poitroae

3

Ponadto, można zrobić to w ten sposób:

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

dotyczące swojego ostatniego komentarza:

Jeśli chcesz podwójne, użyj tego:

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

Ale jaki ma to sens? Można raczej:

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

+0

Konwersja liczby na ciąg i powrót jest bardzo nieefektywna. – rustyx

13

myślę, czego naprawdę szukasz jest coś takiego:

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

Konwersja na łańcuch i jest bezpieczny, jeżeli wartość zostanie przeliczona na Podwójna lub długa (z potencjalną utratą precyzji) od pierwotnej wartości Integer. Podwójna, długa i całkowita liczba całkowita.

HTH Rob

Powiązane problemy