Как передать параметризованный класс в качестве аргумента

Моя цель - разработать класс, который может выводить объект указанного класса.

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

Есть ли выход из этого болота?

15
задан Monkey Boson 12 February 2011 в 19:07
поделиться