Java PSI - Getting actual type parameter of generic base class
Hi,
I'm trying my hand at writing some Java inspections.
In the sources that I want to analyze I have something like this:
abstract class Base<T>
class Derived extends Base<String>
In the inspection while visiting the Derived class I would like to get the type parameter of the parent as String.
I tried these lines, in vain.
PsiClass derived = ... // Initialization code
PsiClass base = derived.getSuperClass();
String typeParameter = base.getTypeParameters()[0].getName(); // Gives T
typeParameter = derived.getExtendsListTypes()[0].resolveGenerics()
.getElement().getTypeParameters()[0].getName(); // This too gives T
Please sign in to leave a comment.
After all, I managed to solve it like this:
PsiClass derived = ... // Initialization code
PsiClassType base = derived.getExtendsListTypes()[0];
Map<PsiTypeParameter, PsiType> map = base.resolveGenerics().getSubstitutor().getSubstitutionMap();
PsiType paramType = map.get(base.resolve().getTypeParameters()[0]).getName(); // This gives String