Поле статической константы Kotlin, возвращающее измененное значение String

Я пытаюсь достичь постоянного строкового значения имени класса. Но я действительно не понимаю, почему я получаю измененное значение String. Вот код, над которым я работаю:

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

В другом классе пытается достичь значения, как это:

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

Спасибо

1 ответ

Решение

Почему я получаю packagePath.TestClass$Companion в конце значения String?

Сопутствующие объекты имеют свои собственные классы, в этом случае объект имеет тип TestClass$Companion, так this::class.java.name as String а также this::javaClass.name оба дают вам имя класса объекта-компаньона.

Как получить TestClass

Вы хотите использовать TestClass::class.java.name а также TestClass::javaClass.name вместо того, чтобы получить TestClass

Другие вопросы по тегам