Обобщения Java являются функциями времени компиляции, List и List одинаковы во время выполнения. Поэтому вы не можете знать тип компонента Collection во время выполнения ..
Этот тип задаваемого вопросаочень часто есть способ получить тип компонента Collection во время выполнения, но вы можете расширить класс коллекции, создавая его, вы можете передать класс компонента конструктору, тем самым вы можете получить тип компонента collection во время выполнения.. Вот образец;
class GenericList<T> extends ArrayList<T> {
private Class<T> componentClasz;
public GenericList(Class<T> clasz){
super();
componentClasz = clasz;
}
public Class<T> getComponentClasz() {
return componentClasz;
}
}
GenericList<String> list = new GenericList<String>(String.class);