當我需要將類型爲Object
的實例投射到雙精度型時,以下哪項更好?爲什麼?將對象的實例投射到基元類型或對象類型
Double d = (Double) object;
或者
double d = (double) object;
當我需要將類型爲Object
的實例投射到雙精度型時,以下哪項更好?爲什麼?將對象的實例投射到基元類型或對象類型
Double d = (Double) object;
或者
double d = (double) object;
不同的是,第一種形式會成功,如果object
爲空 - 第二個會拋出一個NullPointerException
。因此,如果object
的有效值爲空,請使用第一個 - 如果它指示錯誤條件,請使用第二個。
此:
double d = (double) object;
等同於:
Double tmp = (Double) object;
double t = tmp.doubleValue();
(或者只是((Double)object).doubleValue()
但我喜歡清晰分隔兩個操作。)
注意,投給double
是隻在Java 7下有效 - 儘管從Java 7 language enhancements page不清楚爲什麼這是真的。
你可以執行'double d =(double)(Double)object;'在1.7以前的版本中,這會拋出如果'object'爲'null',則從'(double)'投射NPE。 –
@ bmorris591:確實 - 或者直接調用'doubleValue()'。 –
@ bmorris591:我在jdk 1.6和1.7中都得到了NPE! – Gautam
如果你編譯這兩個選項,你會注意到第二個選項...... – kuporific