Joo*_*o21 4 generics any kotlin
有什么区别
inline fun <reified T> T.TAG(): String = T::class.java.simpleName
Run Code Online (Sandbox Code Playgroud)
和
fun Any.TAG(): String = this::class.java.simpleName
Run Code Online (Sandbox Code Playgroud)
使用泛型和 Any 作为函数参数或扩展函数类名有什么区别吗?
它们是有区别的。
inline fun <reified T> T.TAG1(): String = T::class.java.simpleName
fun Any.TAG2(): String = this::class.java.simpleName
Run Code Online (Sandbox Code Playgroud)
TAG1将获得编译时类型,因为 的类型T是在编译时确定的,并且TAG2将获得运行时类型。this::class与Java中的类似this.getClass()。
例如:
val x: Any = "Foo"
Run Code Online (Sandbox Code Playgroud)
x.TAG1()会给你Any::class.java.simpleName,x.TAG2()也会给你String::class.java.simpleName。
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |