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.simpleNamex.TAG2() 会给你 String::class.java.simpleName.