Class c = Integer.class;
System.out.println(c);
它打印
class java.lang.Integer
这是有道理的,因为java.lang.Integer
是一类。所以我们可以有一个对应的Class
对象。
但是当我做
Class c1 = int.class;
System.out.println(c1);
其打印int
我觉得是种暧昧的.class
回报类型的对象Class
和int
不是一个类(但基本类型)。
当基本类型(primitiveType.class.getName()
)不存在时允许.class操作背后的动机是什么?
此外,如果你看到toString(
)Class类的方法
public String toString() {
return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
+ getName();
}
由于原始类型不是类或接口简单地打印名称(int
为int
)。那么为什么允许创建一个不存在的类的对象呢?
我觉得这是Java反模式之一。 –