Моя цель - разработать класс, который может выводить объект указанного класса.
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
. Если я передам ParameterizedType (который сам по себе сложно сгенерировать), не будет никакого метода cast
.
Есть ли выход из этого болота?