Kotlin 中的通用函数与任意函数
Generic vs Any function in Kotlin
有什么区别
inline fun <reified T> T.TAG(): String = T::class.java.simpleName
和
fun Any.TAG(): String = this::class.java.simpleName
使用 generic 和 Any 作为函数参数或扩展函数 class 名称有什么区别吗?
有区别。
inline fun <reified T> T.TAG1(): String = T::class.java.simpleName
fun Any.TAG2(): String = this::class.java.simpleName
TAG1
将获得 编译时 类型,因为 T
的类型在编译时确定,而 TAG2
将获得运行时类型。 this::class
类似于 Java 中的 this.getClass()
。
例如:
val x: Any = "Foo"
x.TAG1()
会给你 Any::class.java.simpleName
,x.TAG2()
会给你 String::class.java.simpleName
.
有什么区别
inline fun <reified T> T.TAG(): String = T::class.java.simpleName
和
fun Any.TAG(): String = this::class.java.simpleName
使用 generic 和 Any 作为函数参数或扩展函数 class 名称有什么区别吗?
有区别。
inline fun <reified T> T.TAG1(): String = T::class.java.simpleName
fun Any.TAG2(): String = this::class.java.simpleName
TAG1
将获得 编译时 类型,因为 T
的类型在编译时确定,而 TAG2
将获得运行时类型。 this::class
类似于 Java 中的 this.getClass()
。
例如:
val x: Any = "Foo"
x.TAG1()
会给你 Any::class.java.simpleName
,x.TAG2()
会给你 String::class.java.simpleName
.