我在看Java反射类并注意到这段代码。让我想知道为什么Java在StringBuilder更快时使用StringBuffer?为什么Java在StringBuilder更快时使用StringBuffer(synchronized)?
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();
}
它可能写在Java5之前(或者在写作的时候不知道Java5的人)? – 2012-08-10 21:42:46
你将不得不问作者。你在这里读到的任何东西都只是猜测而已。不建设性。 – EJP 2012-08-11 02:15:59