Моя цель - создать класс, который может выводить объект определенного класса.
public class GetMe<T> {
public T get() {
Object obj = generateObject();
return (T) obj;
}
}
Теперь я знаю, что это невозможно из-за стирания. Итак, мы можем передать экземпляр класса и использовать его для создания.
public class GetMe<T> {
public GetMe<T>(Class<T> clazz) {
this.clazz = clazz;
}
public T get() {
Object obj = generateObject();
return clazz.cast(obj);
}
}
Это отлично работает! Пока класс не параметризуется. Если да, то у меня проблема.
Мне не разрешено использовать List<String>.class
. Если я передаю параметр ParameterizedType (который сам по себе сложно сгенерировать), не существует метода cast
.
Есть ли выход из этой трясины?