当我需要将类型为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