Мне нужен метод, который возвращает экземпляр класса класса. Предположим, что поставляемые типы ограничены такими, что может быть создан «пустой» экземпляр. Например, при поставке 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
(потому что они не имеют нульарных конструкторов).
@Joonas: Посмотрите еще один раз :) –
Спасибо! Это может сработать :) –
Думаю, я бы пошел на цепочку:. 'type == long.class? (Long) 0L: 'и т. Д. –