java中getCanonicalName()和getName(

2021-04-30  本文已影响0人  方可为友

从源码可以看到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();
       }
   }
image.png

大部分两者是没有区别的,但是像byte[]这种类型就有区别了
getName():打印显示为 [B
getCanonicalName():打印显示为 byte[]

上一篇 下一篇

猜你喜欢

热点阅读