safeAs方法漏洞
来源:9-2 实践:获取泛型实参

hardman_
2021-08-16
fun <T> Any.safeAs(): T? {
return this as? T
}
这段代码如果this的类型和T的类型不一样的话就会报错。只是判断了this是否为空,看来不够safe(手动狗头)
不过我觉得对与这节小课时无伤大雅,自己尝试改了下
inline fun <reified T> Any.safeAs(): T? {
return if (this is T){
this
}else{
null
}
}
写回答
1回答
-
对,本质上是要加inline reified,不然T就被擦除了。里面的if else到也不用,as? 会处理转失败的情况。
inline fun <reified T> Any.safeAs(): T? {
return this as? T
}022021-08-16
相似问题