Поле статической константы 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