在我当前的项目中,我正在编写一个AnnotationProcessor,它应该为带注释的类中的委托属性生成一些代码。假设我的模型类如下:
@Gen
class TestModel {
var itemBoolean: Boolean by loader("xyz", true)
}
在我的注释处理器中,我想从带注释的类中获取所有委托的属性。我没有找到一种通过委托过滤VariableElement
的方法,因此在这里我遍历所有属性:
val classes = roundEnv.getElementsAnnotatedWith(Gen::class.java)
for(cls: Element in classes) {
val props = cls.enclosedElements.filterIsInstance<VariableElement>()
for(prop: VariableElement in props) {
// ...
}
}
要使用KotlinPoet生成代码,我必须获取属性的名称,属性的类型(此处为Boolean
)和参数String xyz
。对于名称,我尝试使用prop.simpleName
来命名,但后缀为${'$'}delegate
。 prop.asType
返回的类型是委托的类型,而不是属性的类型。对于参数字符串,我不知道如何访问它。
您有任何想法我该怎么做吗?