为什么double.class不等于java.lang.Double.class?

时间:2015-07-31 21:35:49

标签: java class primitive

由于原始double用java.lang.Double类表示,所以double.class不应该等于java.lang.Double.class吗? (这当然也适用于其他原始类型)

System.out.println(double.class == Double.class);

输出:

Result: false

3 个答案:

答案 0 :(得分:12)

Double.class是与包装类型Double对应的类对象。 double实际上不是类,但double.class是反射中使用的对象,表示参数或返回类型具有基本类型double

答案 1 :(得分:4)

它们是Class<Double>的两个不同实例。这通常不会发生(对于普通对象),但对于包装类,这正是区分基本类型字段和反射中包装类型的方法。

答案 2 :(得分:3)

double是基本类型,Double是类类型。 Double类上有一个名为TYPE的属性:

例如System.out.println(double.class == Double.TYPE);打印为true。