为什么 double.class 不等于 java.lang.Double.class?
Why doesn't double.class equal java.lang.Double.class?
既然原始双精度数用 java.lang.Double class 表示,double.class 不应该等于 java.lang.Double.class 吗?
(这当然也发生在其他原始类型上)
System.out.println(double.class == Double.class);
输出:
Result: false
Double.class
是包装类型Double
对应的class对象。 double
实际上不是 class,但 double.class
是反射中用来指示参数或 return 类型具有原始类型 double
.[= 的对象15=]
double
是原始类型,Double
是class类型。在 Double
class 上有一个 属性 叫做 TYPE
:
例如 System.out.println(double.class == Double.TYPE);
打印 true。
它们是 Class<Double>
的两个不同实例。这通常不会发生(对于普通对象),但是对于包装器类,这正是反射中区分原始类型和包装器类型字段的方式。
既然原始双精度数用 java.lang.Double class 表示,double.class 不应该等于 java.lang.Double.class 吗? (这当然也发生在其他原始类型上)
System.out.println(double.class == Double.class);
输出:
Result: false
Double.class
是包装类型Double
对应的class对象。 double
实际上不是 class,但 double.class
是反射中用来指示参数或 return 类型具有原始类型 double
.[= 的对象15=]
double
是原始类型,Double
是class类型。在 Double
class 上有一个 属性 叫做 TYPE
:
例如 System.out.println(double.class == Double.TYPE);
打印 true。
它们是 Class<Double>
的两个不同实例。这通常不会发生(对于普通对象),但是对于包装器类,这正是反射中区分原始类型和包装器类型字段的方式。