我有一个包名和一个类名String
,但是我的注释处理器中没有专门的类。我需要使用:
FunSpec.overriding(getOnlyElement(methodsIn(//stuck here)))
stuck here
应该是setOf
ExecutableElement
吗?我怎样才能做到这一点?我还检查了here,但是没有那么多运气。
最佳答案
首先,您需要使用TypeElement
和package
名称获取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)))