我正在尝试在Kotlin中读取String的“ value”字段。我对Kotlin中的反射不太熟悉,因此无法正常工作。这就是我所拥有的:
var str: String = "Some string"
val field = String::class.java.getDeclaredField("value")
field.isAccessible = true
println(field) // This prints "private final char[] java.lang.String.value"
println(field.get(str)) // This prints [C@66d3c617
当尝试将char []转换为Array时,出现此异常:
java.lang.ClassCastException: [C cannot be cast to [Ljava.lang.Character;
我在做什么错了?
答案 0 :(得分:0)
我不确定您要达到的目标,但是您可以尝试一下。
val value = (field.get(str) as ByteArray).toString(Charset.defaultCharset())
println(value)
在我的环境中,该字段是ByteArray,因此我将其强制转换为ByteArray并获得了可打印的版本。就您而言,一个简单的CharArray就足够了。