IntelliJ / Kotlin PSI 中的注释与注释条目

annotations vs annotationEntries in IntelliJ / Kotlin PSI

我有一个 Kotlin 注释:

@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.CLASS)
annotation class Type(
    val type: String
)

它可以在 Kotlin 上使用 classes:

@Type(type = "type")
data class Annotated(
    …
)

我正在用 detekt which provides access to the Kotlin PSI 分析这个源代码。要获得注释,我使用如下代码:

val annotation = klass
    .annotationEntries
    .find {
        "Type" == it?.shortName?.asString()
    }

其中,klass 具有来自 Kotlin PSI 的 KtClass 类型。我注意到,KtClass 有两个属性:annotationsannotationEntries 并且 annotations 对于上面带注释的 class 是空的。

annotationsannotationEntries 有什么区别,什么时候应该使用什么?

Annotation 是声明 (annotation class).

Annotation Entry是注解的应用(@).