如何解决如何从 Annotation Processor 进程的构造函数 Java Element 对象获取参数使用 Kotlin 数据类
目前我正在尝试这种方式:
android {
// ...
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
useIR = true
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion "1.0.0-beta03"
}
}
但这种方式的问题在于它也返回了不在构造函数中的成员字段。
element.enclosedElements.filter { it.kind == ElementKind.FIELD }.filter {
it.modifiers.contains(Modifier.FINAL) &&
!it.modifiers.contains(Modifier.STATIC)
}
注意:我已经尝试过这个库: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 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。