Если with Java 8 API
означает использование потоков, которые вы можете сделать:
public static <T> T createInstance(Class<T> clz, Object... params) throws Exception {
Class<?>[] c = Arrays
.stream(params)
.map(Object::getClass)
.toArray(Class<?>[]::new);
return clz.getConstructor(c).newInstance(params);
}
Тест:
public static void main(String... args) throws Exception {
String s = createInstance(String.class, (Object) new char[] {'h', 'e', 'l', 'l', 'o'});
System.out.println(s);
}
Выход:
hello
По сути, то же самое, что и другой ответ, может быть, немного более элегантно ...
Моя функция не будет работать для примитивных типов, поскольку я не могу получить Integer.TYPE
от универсального типа.