Kotlin注释处理器如何获取构造函数参数类型?

Kotlin注释处理器如何获取构造函数参数类型?,kotlin,annotations,Kotlin,Annotations,我正在用Kotlin编写一个注释处理器,我想得到构造函数参数的类型 这是我的注释类 @SomeAnnotation class MyClass(name: String, age: Int) 我可以从annotatedElement.kotlinMetadata中提取字符串和Int类型吗?或者我应该只使用注释删除,它是类型元素?我该怎么做 这就是我受挫的地方: val metadata = annotatedElement.kotlinMetadata as KotlinClassMetada

我正在用Kotlin编写一个注释处理器,我想得到构造函数参数的类型

这是我的注释类

@SomeAnnotation
class MyClass(name: String, age: Int)
我可以从
annotatedElement.kotlinMetadata
中提取
字符串
Int
类型吗?或者我应该只使用
注释删除
,它是
类型元素
?我该怎么做

这就是我受挫的地方:

val metadata = annotatedElement.kotlinMetadata as KotlinClassMetadata
val proto = metadata.data.classProto
val mainConstructor = proto.constructorList.find { it.isPrimary }
val parameters = annotatedElement.typeParameters

typeParameters
返回0,我应该有2。

您的代码中有两个错误:

  • 您得到的是泛型
    typeParameters
    ,而不是
    parameters.map{it.type}
  • 您试图获取构造函数参数,但使用的是
    annotatedElement
    而不是
    mainConstructor
  • 以下是如何纠正这些错误:

    mainConstructor?.parameters?.map { it.type }