簡體   English   中英

Kotlin對內置類的反思

[英]Kotlin reflection on inbuilt classes

我正在嘗試在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;

我究竟做錯了什么?

我不確定您要達到的目標,但是可以嘗試一下。

val value = (field.get(str) as ByteArray).toString(Charset.defaultCharset())
println(value)

在我的環境中,該字段是ByteArray,因此我將其強制轉換為ByteArray並獲得了可打印的版本。 在您的情況下,一個簡單的CharArray就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM