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.