kotlin: 泛型:reified获取类型信息
一,功能:
关键字reified
关键字 reified 可以让你在运行时访问在代码编译期间应该被擦除的类型信息。reified 关键字使用内联函数来执行这个任务。
如果一个函数被标记为 inline,那么无论在哪里调用该函数,编译器都会将整个函数体直接粘贴到调用处。
二,例子:
代码:
inline fun <reified T> displayValue2(value: T) {
println(value)
println("T类型: ${T::class.simpleName}")
println("T类型: ${T::class.java}")
}
调用:
//处理按钮点击事件
binding.button1.setOnClickListener {
fun <T> displayValue(value: T) {
println(value)
println("类型:"+value!!::class.simpleName)
}
displayValue<String>("Generics")
displayValue<Int>(10)
displayValue("Generics2")
displayValue(20)
displayValue2("Generics3")
displayValue2(30)
}
运行结果:

三,例子:
代码:
fun <T> isString1(obj: Any): Boolean {
//return obj is T // ❌ 编译报错:Cannot check for instance of erased type T
return true
}
// 用 reified + inline(运行时能看清 T 的真身)
inline fun <reified T> isString2(obj: Any): Boolean {
return obj is T // ✅ 能正确判断
}
调用:
//处理按钮点击事件
binding.button2.setOnClickListener {
// 使用:
println(isString2<String>("hello")) // 输出:true
println(isString2<Int>("hello")) // 输出:false
}
运行结果:
![]()
浙公网安备 33010602011771号