将Object的实例转换为基本类型或对象类型

Gau*_*tam 5 java casting primitive-types object-type

当我需要将一个类型的实例Object转换为double时,以下哪个更好,为什么?

Double d = (Double) object;

要么

double d = (double) object;

Jon*_*eet 14

不同之处在于,如果object为null ,则第一个表单将成功- 第二个表单将抛出一个NullPointerException.因此,如果它为objectnull,则使用第一个 - 如果表示错误条件,则使用第二个.

这个:

double d = (double) object;
Run Code Online (Sandbox Code Playgroud)

相当于:

Double tmp = (Double) object;
double t = tmp.doubleValue();
Run Code Online (Sandbox Code Playgroud)

(或者只是((Double)object).doubleValue()为了清晰起见,我喜欢将两个操作分开.)

请注意,强制转换double仅在Java 7下有效 - 尽管从Java 7语言增强页面中不清楚为什么这是真的.

  • @mataug:不,在Java 7之前它不会编译. (3认同)
  • 你可以做`double d =(double)(Double)object;`在java pre 1.7的版本中,如果`object`是`null`,这将从`(double)`cast中抛出NPE. (2认同)