我在看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