Учитывая получатель Method m
,
m.getReturnType().newInstance()
будет создавать экземпляр, пока тип f
является конкретным типом public
(не интерфейс или абстрактный класс) с public
конструктор с нулевым аргументом.И он не будет работать для открытых, нестатических внутренних классов.
Он также не будет работать для примитивных типов возвращаемых данных, таких как Integer.TYPE
.
Так, учитывая большой набор предостереженийЛучше всего написать метод, который проверяет тип возвращаемого значения и создает объект.Таким образом, вы можете вернуть Collections.emptyList()
для абстрактного, но обычно используемого типа возврата List
, и можете вернуть 0
для int
.