之間有什么區別
inline fun <reified T> T.TAG(): String = T::class.java.simpleName
和
fun Any.TAG(): String = this::class.java.simpleName
使用 generic 和 Any 作為函式引數或擴展函式類名有什么區別嗎?
uj5u.com熱心網友回復:
它們是有區別的。
inline fun <reified T> T.TAG1(): String = T::class.java.simpleName
fun Any.TAG2(): String = this::class.java.simpleName
TAG1將獲得編譯時型別,因為型別T是在編譯時確定的,并且TAG2將獲得運行時型別。this::class類似于this.getClass()Java。
例如:
val x: Any = "Foo"
x.TAG1()會給你Any::class.java.simpleName,x.TAG2()也會給你String::class.java.simpleName。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375640.html
上一篇:關于模塊的全面實作的規則是什么?
