我需要一个返回所提供类类型实例的方法。让我们假设提供的类型仅限于可以创建它们的“空”实例。例如,提供String.class
将返回一个空字符串,提供一个Integer.class
将返回一个初始值为零的整数,等等。但是我如何动态创建(盒装)原始类型?像这样?
public Object newInstance(Class<?> type) {
if (!type.isPrimitive()) {
return type.newInstance(); // plus appropriate exception handling
} else {
// Now what?
if (type.equals(Integer.class) || type.equals(int.class)) {
return new Integer(0);
}
if (type.equals(Long.class) // etc....
}
}
是遍历所有可能的原始类型的唯一解决方案,还是有更直接的解决方案?请注意,两者
int.class.newInstance()
和
Integer.class.newInstance()
抛出一个InstantiationException
(因为它们没有空构造函数)。