委托属性的注释处理

时间:2018-12-20 12:21:14

标签: kotlin annotations kotlinpoet

在我当前的项目中,我正在编写一个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来命名,但后缀为${'$'}delegateprop.asType返回的类型是委托的类型,而不是属性的类型。对于参数字符串,我不知道如何访问它。

您有任何想法我该怎么做吗?

0 个答案:

没有答案