2013-03-04 19 views
8

Tôi kéo một int từ một đối tượng con trỏ Mongo như vậy:Cách đơn giản nhất để truy xuất int từ kết quả mongo?

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

Nó có vẻ lạ mà tôi phải diễn viên ba để làm cho nó một số nguyên, là có một cách tốt hơn?

+0

Chỉ cần làm rõ, tự khởi động thể hiện giá trị số nguyên chứ không phải dấu phẩy động. Cho dù tôi làm điều đó ở đây hay ở nơi khác, cuối cùng con số mà trở lại từ Mongo cuối cùng sẽ được sử dụng như một int. – justkevin

Trả lời

2

Đúng, bạn chỉ cần một lần truyền.

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

Điều đó mang lại cho tôi một "java.lang.ClassCastException: java.lang.Double không thể được đưa vào ngoại lệ thời gian chạy java.lang.Integer". – justkevin

+0

Vâng, bạn cần gấp đôi! – user

+0

@justkevin Biến "tự khởi động" của bạn thuộc loại gấp đôi. Tôi đã cập nhật mã. – poitroae

3

Ngoài ra, bạn có thể làm theo cách này:

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

Về bình luận cuối cùng của bạn:

Nếu bạn muốn tăng gấp đôi, sử dụng này:

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

Nhưng ý nghĩa trong đó là gì? Bạn khá có thể có:

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

+0

Chuyển đổi một số thành chuỗi và ngược lại là rất kém hiệu quả. – rustyx

13

Tôi nghĩ rằng những gì bạn đang thực sự tìm kiếm là một cái gì đó như thế này:

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

Không chuyển đổi thành một chuỗi và nó là an toàn nếu giá trị được chuyển đổi sang một Double hoặc Long (với khả năng mất chính xác) từ giá trị Integer ban đầu. Double, Long và Integer tất cả mở rộng Number.

HTH Rob

Các vấn đề liên quan