Я следую Hello World of Annotation Processing в Kotlin и Документация KotlinPoet и пытаюсь реализовать универсальный компоновщик для Kotlin.Я хотел бы в общем случае создать метод для каждого поля в аннотированном классе данных и дать его аргументу то же имя и тип поля.Проблема в том, что я не могу найти, какой тип у поля, учитывая экземпляр javax.lang.model.element.Element
, который у меня есть.Вот что мне удалось сделать так далеко:
fieldsIn(klass.enclosedElements)
.forEach {
classBuilder
.addProperty(PropertySpec
.builder(it.toString(), String::class, KModifier.INTERNAL)
.mutable(true)
.initializer("\"\"")
.build())
classBuilder
.addFunction(FunSpec
.builder(it.toString())
.addParameter(ParameterSpec
.builder(
it.toString(),
it.?) // what to use here?
.build())
.build())
}
Как я могу найти тип поля?Я прочитал в документации , что вы должны использовать метод asType()
, но это возвращает экземпляр TypeMirror
.Я действительно не вижу, как продолжить отсюда.Любые предложения приветствуются.