從源碼可以看到getName()就是存在于虛擬機(jī)中class的名稱
public String getName() {
String name = this.name;
if (name == null)
this.name = name = getNameNative();
return name;
}
從源碼中看到getCanonicalName()就是取一個(gè)更見(jiàn)名思意的名稱
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();
}
}

image.png
大部分兩者是沒(méi)有區(qū)別的,但是像byte[]這種類型就有區(qū)別了
getName():打印顯示為 [B
getCanonicalName():打印顯示為 byte[]