Dies ist eine alte Version des Dokuments!
Generic mit instanceof
Hin und wieder besteht das Bedürfnis herauszubekommen von welchem Typ ein Generic nun wirklich ist.
In der Regel weißt folgender Code auf schlechtes Design hin. Manchmal hilft er aber
package com.sowas.javawiki; import java.lang.reflect.ParameterizedType; public class GenericType{ @SuppressWarnings("unchecked") public static void main(String[] args) throws InstantiationException, IllegalAccessException{ Class c = new MyClass<String>(){}.getType(); System.out.println(c); System.out.println((c.newInstance() instanceof String)?"String":"No String"); } static class MyClass<T> { Class<T> type; @SuppressWarnings("unchecked") public MyClass(){ type = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; } public Class<T> getType(){ return type; } } }