fork(2) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. /* package whatever; // don't place package name! */
  4.  
  5. public class Main {
  6.  
  7. public static class Lazy<T> {
  8. T field;
  9. public T get() {
  10. return field;
  11. }
  12. }
  13.  
  14. public static class Whatever<T> {
  15. T field;
  16. public T get() {
  17. return field;
  18. }
  19. }
  20.  
  21.  
  22.  
  23. public static Lazy<Whatever<String>> lazyWhateverString;
  24.  
  25.  
  26. public static void main(String args[]) throws Exception {
  27.  
  28. java.lang.reflect.Field field = Main.class.getField("lazyWhateverString");
  29.  
  30. java.lang.reflect.ParameterizedType lazyType = (java.lang.reflect.ParameterizedType) field.getGenericType();
  31. java.lang.reflect.ParameterizedType whateverType = (java.lang.reflect.ParameterizedType) lazyType.getActualTypeArguments()[0];
  32. Class<String> realType = (Class<String>) whateverType.getActualTypeArguments()[0];
  33.  
  34.  
  35.  
  36.  
  37. System.out.println(lazyType.getRawType());
  38. System.out.println(whateverType.getRawType());
  39. System.out.println(realType);
  40. }
  41. }
  42.  
Success #stdin #stdout 0.09s 27900KB
stdin
Standard input is empty
stdout
class Main$Lazy
class Main$Whatever
class java.lang.String