如何在 Kotlin PSI 中获得 class 的完全限定域名?

How do a get a fully qualified domain name of class in Kotlin PSI?

我有一个 Kotlin 数据 class:

package a.b.c

data class Example(
    …
)

我正在用detekt which provides access to the Kotlin PSI分析它。

我正在尝试获取我的 class:

的 FQDN
println(klass.nameAsName?.identifier)

其中,klass 具有来自 Kotlin PSI 的 KtClass 类型。但是该代码只打印了我的 class 的简称,例如 Example,而我想得到 a.b.c.Example.

如何在 Kotlin PSI 中获得 class 的完全限定域名?

KtClass 实现了提供 fqName 方法的 KtNamedDeclaration 接口。

FqName getFqName();

这会给你你想要的。所以:

klass.fqName.asString()