<span style="font-family: Arial, Helvetica, sans-serif;">package testName;</span>
class Name{
class Inner{}
}
public class testGetName {
public static void main(String[] args) throws Exception {
// info Auto-generated method stub
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());
}
}
输出结果如下:
Name.class.getCanonicalName(): testName.Name
Name.class.getName(): testName.Name
Name.class.getSimpleName(): Name
Name.Inner.class.getCanonicalName(): testName.Name.Inner
Name.Inner.class.getName(): testName.Name$Inner
Name.Inner.class.getSimpleName(): Inner
args.getClass().getCanonicalName(): java.lang.String[]
args.getClass().getName(): [Ljava.lang.String;
args.getClass().getSimpleName(): String[]
可以看出,对于大部分class而言,getCanonicalName和getName这两个方法没有什么不同的, 但是对于array或内部类等就显示出来了。
getName()方法,以String的形式,返回Class对象的‘实体’名称;
getSimpleName()方法,是获取源代码中给出的‘底层类’简称;