当 class 不存在时,KotlinPoet 如何使用 FunSpec.overriding?

KotlinPoet how to use FunSpec.overriding when the class is not present?

我有一个包名称和一个 class 名称作为 Strings 但我的注释处理器中没有专门的 class。我需要使用:

FunSpec.overriding(getOnlyElement(methodsIn(//stuck here)))

stuck here应该是setOfExecutableElement吧?我怎样才能做到这一点?

我也检查过here,但没有那么幸运。

首先您需要使用 packageclass 名称获得一个 TypeElement(为此您需要一个 ProcessingEnvironment 实例)。

fun getTypeElement(
        processingEnvironment: ProcessingEnvironment,
        packageName: String,
        className: String
): TypeElement {
    return processingEnvironment.elementUtils.getTypeElement("$packageName.$className")
}

然后您可以简单地访问 TypeElement 中的 enclosedElements:

val typeElement = getTypeElement(processingEnv, packageName, className)

FunSpec.overriding(getOnlyElement(methodsIn(typeElement.enclosedElements)))