У меня есть Object obj
, который, как я знаю, на самом деле является long
.
В каком-то математическом коде мне это нужно как double
.
Безопасно ли сразу его дублировать в два раза?
double x = (double)obj;
Или я должен скорее перенести его сначала на длинный, а затем на двойной.
double x = (double)(long)obj;
Я также нашел другую (менее читаемую) альтернативу:
double x = new Long((long)obj).doubleValue();
Каковы опасности/последствия этого?
Резюме решения:
-
obj
являетсяNumber
, а не along
. - Java 6 требует явного литья, например:
double x = ((Number)obj).doubleValue()
- В Java 7 работает магия:
double x = (long)obj
Подробнее о проблеме Java6/7 также читайте обсуждение ответа TJ.
Изменить: Я провел несколько быстрых тестов. Оба способа каста (явный/магический) имеют одинаковую производительность.