我正在尝试获取类名的常量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"
}
}
为什么我在String值的末尾得到packagePath.TestClass$Companion
?我期待得到packagePath.TestClass
由于
答案 0 :(得分:2)
伴随对象具有自己的类,在这种情况下,对象的类型为TestClass$Companion
,因此this::class.java.name as String
和this::javaClass.name
都会为您提供伴随对象类的名称。
您需要使用TestClass::class.java.name
和TestClass::javaClass.name
来获取TestClass