由于原始double用java.lang.Double类表示,所以double.class不应该等于java.lang.Double.class吗? (这当然也适用于其他原始类型)
System.out.println(double.class == Double.class);
输出:
Result: false
答案 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。