当 class 不存在时,KotlinPoet 如何使用 FunSpec.overriding?
KotlinPoet how to use FunSpec.overriding when the class is not present?
我有一个包名称和一个 class 名称作为 String
s 但我的注释处理器中没有专门的 class。我需要使用:
FunSpec.overriding(getOnlyElement(methodsIn(//stuck here)))
stuck here
应该是setOf
ExecutableElement
吧?我怎样才能做到这一点?
我也检查过here,但没有那么幸运。
首先您需要使用 package
和 class
名称获得一个 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)))
我有一个包名称和一个 class 名称作为 String
s 但我的注释处理器中没有专门的 class。我需要使用:
FunSpec.overriding(getOnlyElement(methodsIn(//stuck here)))
stuck here
应该是setOf
ExecutableElement
吧?我怎样才能做到这一点?
我也检查过here,但没有那么幸运。
首先您需要使用 package
和 class
名称获得一个 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)))