java.lang.Class<T>
参数 T:此 Class 对象建模的类的类型。例如,String.class 的类型是
Class<String>
。如果将被建模的类未知,则使用Class<?>
。
比较 getName() getCanonicalName() getSimpleName()
getName() 以 String 形式返回 Class 对象的‘实体’名称;
getCanonicalName() 和 getName 一样,区别在于 array 或内部类的显示上;
- 数组:getCanonicalName 返回 Java 规范格式(如“java.lang.String[]”);getName 返回 JVM 书写格式(如“[Ljava.lang.String;”);
- 内部类:getCanonicalName 以小数点“.”分隔(如 Name.Inner);getName 以
$
分隔(如 Name$
Inner);
getSimpleName() 获取源代码中给出的‘底层类’简称;
public class TestGetName {
public static void main(String[] args) {
System.out.println("Name.class.getCanonicalName(): " + Name.class.getCanonicalName());
System.out.println("Name.class.getName(): " + Name.class.getName());
System.out.println("Name.class.getSimpleName(): " + Name.class.getSimpleName());
System.out.println("Name.Inner.class.getCanonicalName(): " + Name.Inner.class.getCanonicalName());
System.out.println("Name.Inner.class.getName(): " + Name.Inner.class.getName());
System.out.println("Name.Inner.class.getSimpleName(): " + Name.Inner.class.getSimpleName());
System.out.println("args.getClass().getCanonicalName(): " + args.getClass().getCanonicalName());
System.out.println("args.getClass().getName(): " + args.getClass().getName());
System.out.println("args.getClass().getSimpleName(): " + args.getClass().getSimpleName());
}
}
class Name {
class Inner {
}
}
输出结果
Name.class.getCanonicalName(): com.rs.common.tool.Name
Name.class.getName(): com.rs.common.tool.Name
Name.class.getSimpleName(): Name
Name.Inner.class.getCanonicalName(): com.rs.common.tool.Name.Inner
Name.Inner.class.getName(): com.rs.common.tool.Name$Inner
Name.Inner.class.getSimpleName(): Inner
args.getClass().getCanonicalName(): java.lang.String[]
args.getClass().getName(): [Ljava.lang.String;
args.getClass().getSimpleName(): String[]