3.2.3 原始类型与 forName
无法用 forName 方法获取原始类型的 class 对象,如下代码将抛出 ClassNotFoundException 异常:
Class.forName(char.class.getName());
至于为什么这么设计,原因并不清楚。如果需要让 forName 也能处理原始类型,则可以自己实现一个工具方法,在该方法中 获取 ClassNotFoundException 然后检查要加载的原始类型名字,直接返回对应的 class 对象,如下:
Class<?> cls = null;
try {
cls = Class.forName(char.class.getName());
} catch (ClassNotFoundException e) {
switch (e.getMessage()) {
case "char":
cls = char.class;
break;
...
default:
break;
}
}