Страницы

Поиск по вопросам

среда, 15 мая 2019 г.

Как создать объект типа T

У меня есть метод с параметром
void testMethod(Consumer arg) { T t = ???; arg.accept(t); }
Как создать объект типа T при условии что T имеет конструктор по умолчанию?
Вот код, который я испытывал
public class MethodConsumer { private void test(T t) { // Consumer System.out.println("test()"+t); };
void testMethod(Consumer arg) { T t = null; arg.accept(t); }
public static void main(String[] args){ MethodConsumer test = new MethodConsumer(); test.testMethod((t) -> test.test(t)); }
}


Ответ

Вообще то, то что вы пытаетесь сделать запрещено, читайте туториал
You cannot create an instance of a type parameter.
Оно и понятно, шаблон не живет сам по себе, он живет только с конкретным типом.
В вашем случае рабочий код может выглядеть приблизительно так:
void testMethod(Consumer arg, Class clazz) { T t = clazz.newInstance(); //надо ловить эксепшн arg.accept(t); }
Обратите внимание, что во втором параметре мы указываем тип T
А вызов его типа, так:
String s="blabla"; test.testMethod(arg, s.class);

Комментариев нет:

Отправить комментарий