我正在查看 Java 反射类并注意到这段代码。让我想知道,为什么当 StringBuilder 更快时 Java 使用 StringBuffer ?
Java不想使用最快的实现,还是有其他原因?
代码在 Field.class 中:
static String getTypeName(Class<?> type) {
if (type.isArray()) {
try {
Class<?> cl = type;
int dimensions = 0;
while (cl.isArray()) {
dimensions++;
cl = cl.getComponentType();
}
StringBuffer sb = new StringBuffer();
sb.append(cl.getName());
for (int i = 0; i < dimensions; i++) {
sb.append("[]");
}
return sb.toString();
} catch (Throwable e) { /*FALLTHRU*/ }
}
return type.getName();
}