kotlin中的reified关键字有什么用?
有些场景需要在范型方法中获取范型的真实类型,但是我们却无法直接获取范型的真实类型,比如下面这样编译是不通过的。
fun <T> test(t: T) {
println(T::class.java)
}
如果不用reified
关键字,我们一般会多传入一个参数用来获取范型的真实类型。
fun <T> test(t: T, clazz: Class<T>) {
println(clazz)
}
如果使用reified
关键字,我们就无需多传入参数。
inline fun <reified T> test(t: T) {
println(T::class.java)
}
使用reified
需要注意两点,一是reified
只能用于inline
方法中,二是包含reified
的inline
方法无法在java中调用。更多内容可以参考kotlin范型中的reified关键字。
内容