我有一个包名和一个类名String,但是我的注释处理器中没有专门的类。我需要使用:

FunSpec.overriding(getOnlyElement(methodsIn(//stuck here)))
stuck here应该是setOf ExecutableElement吗?我怎样才能做到这一点?

我还检查了here,但是没有那么多运气。

最佳答案

首先,您需要使用TypeElementpackage名称获取class(为此需要一个ProcessingEnvironment实例)。

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

然后,您可以简单地访问enclosedElements中的TypeElement:
val typeElement = getTypeElement(processingEnv, packageName, className)

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

10-01 22:22