当我们说
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
for int
)。那么,为什么要允许创建Class
不存在的类的对象呢?
它记录在javadoc中:
原始Java类型(布尔,字节,字符,short,int,long,float和double)以及关键字void也都表示为Class对象。
当您要调用通过反射期望原始参数的方法时,它特别有用。
想象一个方法:
class MyClass {
void m(int i) {}
}
您可以通过以下方式访问它:
MyClass.class.getDeclaredMethod("m", int.class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句