Reflection Java Tutorial

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
import java.util.List;
public class GenericReflect {
  public static void main(String[] args) {
    TypeVariable[] tv = List.class.getTypeParameters();
    System.out.println(tv[0].getName()); // E
    class StringList extends ArrayList {
    }
    Type type = StringList.class.getGenericSuperclass();
    System.out.println(type); 
    ParameterizedType pt = (ParameterizedType) type;
    System.out.println(pt.getActualTypeArguments()[0]);
  }
}