Не используйте аргумент Class<T>
вместе с отражением (то есть Class.newInstance()
).Вместо этого используйте Supplier<T>
:
public static <T> T executeGetRequest(String target, Supplier<T> factory) {
// MY STUFF
T result = factory.get();
return result;
}
Затем вызовите его следующим образом:
List<myCustomObject> result = executeGetRequest("myList", () -> new ArrayList<>());
Вы даже можете использовать оператор ромба (<>
) при создании ArrayList
, поскольку это выводится с левой стороны компилятором (то есть List<myCustomObject>
).
Вы также можете использовать ссылку на метод:
List<myCustomObject> result = executeGetRequest("myList", ArrayList::new);