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

时间:2019-11-20 11:40:35

标签: kotlin annotations

我正在用Kotlin写一个注释处理器,我想获取构造函数参数的类型。

这是我带注释的课程

@SomeAnnotation
class MyClass(name: String, age: Int)

我可以从String中提取IntannotatedElement.kotlinMetadata类型吗?还是应该只使用annotatedElement的{​​{1}}?我怎样才能做到这一点?

这就是我被困住的地方:

TypeElement

val metadata = annotatedElement.kotlinMetadata as KotlinClassMetadata val proto = metadata.data.classProto val mainConstructor = proto.constructorList.find { it.isPrimary } val parameters = annotatedElement.typeParameters 返回0,我应该有2。

1 个答案:

答案 0 :(得分:2)

您的代码中有两个错误:

  1. 您将获得通用的typeParameters而不是parameters.map { it.type }
  2. 您正在尝试获取构造函数参数,但是您使用的是annotatedElement而不是mainConstructor

您可以在此处纠正它们:

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