Java - Allgemein

Generic mit instanceof

Hin und wieder besteht das Bedürfnis zu bestimmen von welchem Typ ein Generic nun wirklich ist.
In der Regel weißt folgender Code aber auf schlechtes Design hin. Trotzdem hilft er manchmal… ;-)


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