如何从注释处理器进程的构造函数 Java 元素对象中获取参数。使用 Kotlin 数据 Class

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。

谢谢。

假设只有一个public构造函数(如果存在多个构造函数将抛出异常IllegalArgumentException):

(element.enclosedElements.single { 
    it.kind == ElementKind.CONSTRUCTOR && it.modifiers.contains(Modifier.PUBLIC) 
} as ExecutableElement).parameters

正在获取所有 public 个构造函数。

val publicConstructors = element.enclosedElements.filter {
    it.kind == ElementKind.CONSTRUCTOR && it.modifiers.contains(Modifier.PUBLIC)
}.map { it as ExecutableElement }