lotabout/CodeGenerator

设置Member时,如何拿到当前class的父类的fields

Closed this issue · 2 comments

image
如图所示,我希望能够通过class0,获取到父类的字段

如果能够递归查询所有的父类字段就更好了

@litttlefisher 是可以的,如下:

#set($parentClass = $EntryFactory.of($class0.raw.superClass))
#set($availableMembers = $parentClass.members)

是这样的,Intellij 内部使用的是 PsiClass 来表示类,PsiClass::getSuperClass 可以获取到对应的父类。但 PsiClass 不方便直接用于代码生成。ClassEntry 是在它基础之上做的一个包裹,ClassEntry::getRaw() 可以获取对应的 PsiClass 实例。

而 PsiClass 提供的方法,通过搜索 Intellij 的 API 就可以了。获取父类:https://intellij-support.jetbrains.com/hc/en-us/community/posts/206774595-Get-parent-and-child-of-class

@lotabout 3Q,按照你所写,完美运行