鍍金池/ 問答/Java  HTML/ "[]" 結(jié)尾的class 文件描述符在java中表示什么類

"[]" 結(jié)尾的class 文件描述符在java中表示什么類型

if(clazz != null) {
            return clazz;
        } else {
            Class ex;
            String clToUse1;
            if(name.endsWith("[]")) {  //此處的[]結(jié)尾的描述符表示什么類型呢?
                clToUse1 = name.substring(0, name.length() - "[]".length());
                ex = forName(clToUse1, classLoader);
                return Array.newInstance(ex, 0).getClass();
            } else if(name.startsWith("[L") && name.endsWith(";")) {
                clToUse1 = name.substring("[L".length(), name.length() - 1);
                ex = forName(clToUse1, classLoader);
                return Array.newInstance(ex, 0).getClass();
            } else if(name.startsWith("[")) {
                clToUse1 = name.substring("[".length());
                ex = forName(clToUse1, classLoader);
                return Array.newInstance(ex, 0).getClass();
            } else {
                ClassLoader clToUse = classLoader;
                if(classLoader == null) {
                    clToUse = getDefaultClassLoader();
                }

                try {
                    return clToUse != null?clToUse.loadClass(name):Class.forName(name);
                } catch (ClassNotFoundException var9) {
                    int lastDotIndex = name.lastIndexOf(46);
                    if(lastDotIndex != -1) {
                        String innerClassName = name.substring(0, lastDotIndex) + '$' + name.substring(lastDotIndex + 1);

                        try {
                            return clToUse != null?clToUse.loadClass(innerClassName):Class.forName(innerClassName);
                        } catch (ClassNotFoundException var8) {
                            ;
                        }
                    }

                    throw var9;
                }
            }
        }
回答
編輯回答
笨尐豬
 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();
        }
    }

數(shù)組的Class對(duì)象調(diào)用getCanonicalName方法,返回 Java Language Specification 中所定義的底層類的規(guī)范化名稱,名稱以[]結(jié)尾

2017年11月28日 03:20