从源码可以看到getName()就是存在于虚拟机中class的名称
public String getName() {
String name = this.name;
if (name == null)
this.name = name = getNameNative();
return name;
}
从源码中看到getCanonicalName()就是取一个更见名思意的名称
public String getCanonicalName() {
if (isArray()) {
String canonicalName = getComponentType().getCanonicalName();
if (canonicalName != null)
return canonicalName + "[]";
else
return null;
}
if (isLocalOrAnonymousClass())
return null;
Class<?> enclosingClass = getEnclosingClass();
if (enclosingClass == null) { // top level class
return getName();
} else {
String enclosingName = enclosingClass.getCanonicalName();
if (enclosingName == null)
return null;
return enclosingName + "." + getSimpleName();
}
}
大部分两者是没有区别的,但是像byte[]这种类型就有区别了
getName():打印显示为 [B
getCanonicalName():打印显示为 byte[]