在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ 關(guān)于kotlin的泛型問(wèn)題

關(guān)于kotlin的泛型問(wèn)題

import kotlin.reflect.KProperty
import kotlinx.serialization.*
import kotlinx.serialization.json.JSON.Companion.stringify
class Delegate<T: Any>(val key: String, private val default: T) {
  operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
    return "$thisRef, thank you for delegating '${property.name}' to me!"
  }

  operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
    println("$value has been assigned to '${property.name}' in $thisRef.")
    stringify(default)
  }
}
fun main(args: Array<String>) {
  var t by Delegate("test", Data("t"))
}
@Serializable
data class Data(val name: String)

圖片描述
圖片描述

Delegate類(lèi)的泛型我約束為Any下的字類(lèi),為什么stringify 不接收

回答
編輯回答
伴謊
import kotlin.reflect.KProperty
import kotlinx.serialization.*
import kotlinx.serialization.json.JSON.Companion.stringify

class Delegate(val key: String, private val default: Data) {

//    init {
//        println(stringify(default))
//    }

    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        return "$thisRef, thank you for delegating '${property.name}' to me!"
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        println("$value has been assigned to '${property.name}' in $thisRef.")
        stringify(default)
    }
}

fun main(args: Array<String>) {
    var t by Delegate("test", Data("t"))

}

@Serializable
data class Data(val name: String)

不用泛型就沒(méi)問(wèn)題,這里應(yīng)該是不能用泛型,應(yīng)該是serialization在編譯期就要告訴它確切的類(lèi)型


https://github.com/JetBrains/...
reified需要一個(gè)確定的類(lèi)型

2018年7月4日 19:15