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 String
和 this::javaClass.name
都给你命名伴随对象的 class.
如何获取测试类
您需要使用 TestClass::class.java.name
和 TestClass::javaClass.name
来获得 TestClass
我正在尝试获取 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 String
和 this::javaClass.name
都给你命名伴随对象的 class.
如何获取测试类
您需要使用 TestClass::class.java.name
和 TestClass::javaClass.name
来获得 TestClass