if(clazz != null) {
return clazz;
} else {
Class ex;
String clToUse1;
if(name.endsWith("[]")) { //此处的[]结尾的描述符表示什么类型呢?
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;
}
}
}
在Java中,[]
是一个集合类的结尾,用于表示一个空的集合。集合类包括ArrayList、LinkedList、HashSet等,它们都包含一个元素列表。
例如,ArrayList
的类描述符是 [a-zA-Z0-9]*
,表示这个列表可以包含任何类型的元素,但不一定是整数或字符串。而 LinkedList
的类描述符是 [a-zA-Z0-9*?]+
,表示这个列表可以包含任何类型的元素,但不一定是整数或字符串。
注意,这些类描述符是所有集合类的通用描述符,具体到某个集合类,其类描述符可能会有所不同。例如,LinkedList
类描述符中的 ?
表示可变长度的列表。