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();
}