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;
      }
   }
}

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007