java reflection on generics

When you drill down far into Java reflection, you end up at the reflection class for generic types. This is, if you have


class Blah {
  T t;
  public T get() { return t; }
}
... Blah stringBlah = new Blah();

Then you can get the configured return type “String” by reflecting on the method “get”. The return type of that method is String. BUT if you need the generic variable T of Blah, you end up calling Blah.class.getTypeParameters(). And here the fun starts in the doc of TypeVariable:

The type parameter D represents the type of generic declaration that declared the underlying type variable.

wtf? this is as complex as playing braid.