Как мне этого добиться?
public class GenericClass<T> { public Type getMyType() { //How do I return the type of T? } }
Все, что я пробовал до сих пор, всегда возвращает тип Object, а не конкретный используемый тип.
Object
public static final Class<?> getGenericArgument(final Class<?> clazz) { return (Class<?>) ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0]; }
Это может быть полезно для кого-то. Вы можете использовать java.lang.ref.WeakReference; таким образом:
class SomeClass<N>{ WeakReference<N> variableToGetTypeFrom; N getType(){ return variableToGetTypeFrom.get(); } }
Я обнаружил, что это простое и понятное решение
public class GenericClass<T> { private Class classForT(T...t) { return t.getClass().getComponentType(); } public static void main(String[] args) { GenericClass<String> g = new GenericClass<String>(); System.out.println(g.classForT()); System.out.println(String.class); } }