繁体   English   中英

如何从注释处理器进程中的构造函数 Java 元素 object 获取参数。 使用 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。

谢谢。

假设只有一个公共构造函数(如果存在多个构造函数,将抛出异常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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM