Как написать функцию, которая возвращает значение по умолчанию для данного класса? Если класс является одним из примитивов, он должен возвращать класс-оболочку со значением по умолчанию, иначе возвращает null.
Так я полагаю, что для примитивов, как int.class
вы хотите вернуть new Integer(0)
, но позволяет сказать, что объекты, которые вы хотите вернуть null
.
Если это правда, вы можете использовать факт, что в начале массивы заполняются значениями по умолчанию. Попробуйте, может быть, таким образом
import java.lang.reflect.Array;
...
public static <B> Object defaultValue(Class<B> clazz) {
return Array.get(Array.newInstance(clazz, 1),0);
}
Array.newInstance(clazz, 1)
создаст массив типа clazz
с одного элемента по умолчанию,
Array.get(<someArray>, 0)
вернет свой первый элемент.
- также, так как ваш метод
defaultValue
возвращает объект, он будет автобоксирован до соответствующего типа int
->Integer
.
Пример
System.out.println(defaultValue(int.class));
System.out.println(defaultValue(int.class).getClass());
печатает
0
class java.lang.Integer
Вы не можете сделать это в одной строке (если это то, что вы хотите сделать). –
Не обязательно должна быть одна строка. – milan
Сделайте отдельные случаи «если» для каждого из возможных классов. –