Kotlin 静态常量字段返回修改后的字符串值

Kotlin static constant field returning modified String value

我正在尝试获取 Class 名称的常量字符串值。但是我真的不明白为什么我得到的是修改后的String值。 这是我正在处理的代码:

class TestClass {
    companion object {
            @JvmField
            val TAG1: String = this::class.java.name as String
            val TAG2: String = this::javaClass.name 
    } 
}

在另一个 class 中试图达到这样的值:

class ComboClass {
    override fun onStart() {
       val tag1 = TestClass.TAG1
       val tag2 = TestClass.TAG2

       // tag1 "packagePath.TestClass$Companion"
       // tag2 "packagePath.TestClass$Companion"
    }
}

为什么我在字符串值的末尾得到 packagePath.TestClass$Companion?我期待 packagePath.TestClass

谢谢

为什么我在字符串值的末尾得到 packagePath.TestClass$Companion?

伴随对象有它们自己的 class,在本例中,对象的类型为 TestClass$Companion,因此 this::class.java.name as Stringthis::javaClass.name 都给你命名伴随对象的 class.

如何获取测试类

您需要使用 TestClass::class.java.nameTestClass::javaClass.name 来获得 TestClass