私はObject obj
私が実際に知っていることを持っていlong
ます。一部の数学コードでは、として必要double
です。
直接2倍にキャストしても大丈夫ですか?
double x = (double)obj;
または、最初に長くキャストしてから、2倍にキャストする必要があります。
double x = (double)(long)obj;
私はまた別の(読みにくい)代替案を見つけました:
double x = new Long((long)obj).doubleValue();
どちらかを行うことの危険性/影響は何ですか?
ソリューションの概要:
obj
はであり、ではNumber
ありませんlong
。- Java 6では、明示的なキャストが必要です。例:
double x = ((Number)obj).doubleValue()
- Java 7には、機能するキャストマジックがあります。
double x = (long)obj
Java6 / 7の問題の詳細については、TJの回答の説明も参照してください。
編集:私はいくつかの簡単なテストを行いました。キャストの両方の方法(明示的/魔法)は同じパフォーマンスを持っています。