[英]Kotlin - How to get KClass<*> annotation parameter from annotation processor
[英]How do I get parameters from constructors Java Element object from Annotation Processor process. using Kotlin Data Class
目前我正在尝试这种方式:
element.enclosedElements.filter { it.kind == ElementKind.FIELD }.filter {
it.modifiers.contains(Modifier.FINAL) &&
!it.modifiers.contains(Modifier.STATIC)
}
但是这种方式的问题是它还返回了不在构造函数中的成员字段。
data class Post(
val id: Int,
val title: String,
val content: String?,
val a: Char,
val b: Char?,
val author_id: Int?,
val is_public: Boolean,
val is_updated: Boolean?,
) {
private val myCustomField = true // I don't need this field when processing this class in annotation processor.
}
注意:我试过这个库: https://github.com/Takhion/kotlin-metadata但这个库不支持最新版本的 Kotlin。
谢谢。
假设只有一个公共构造函数(如果存在多个构造函数,将抛出异常IllegalArgumentException
):
(element.enclosedElements.single {
it.kind == ElementKind.CONSTRUCTOR && it.modifiers.contains(Modifier.PUBLIC)
} as ExecutableElement).parameters
获取所有公共构造函数。
val publicConstructors = element.enclosedElements.filter {
it.kind == ElementKind.CONSTRUCTOR && it.modifiers.contains(Modifier.PUBLIC)
}.map { it as ExecutableElement }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.