【发布时间】:2023-01-26 20:58:25
【问题描述】:
我试试看:
fun <T : E> ArrayList<E>.getTypeOrNull(index:Int) : T? {
val item = this.getOrNull(index)
return if(item is T) item else null
}
我该怎么做?我是 kotlin java 的新手
【问题讨论】:
标签: java kotlin arraylist collections get
我试试看:
fun <T : E> ArrayList<E>.getTypeOrNull(index:Int) : T? {
val item = this.getOrNull(index)
return if(item is T) item else null
}
我该怎么做?我是 kotlin java 的新手
【问题讨论】:
标签: java kotlin arraylist collections get
你真的需要扩展吗?要调用扩展程序,您必须传递 T 的具体类型,对吧?否则,他的函数不知道要检查哪种类型。
怎么样简单:
yourResult = yourList[5] as? ConcreteT
【讨论】:
我认为您必须检查要求,因为该功能看起来很奇怪:
但如果你真的需要它:
inline fun <TE : Any, reified T: TE> ArrayList<TE>.getTypeOrNull(index:Int) : T? =
getOrNull(index) as? T
现在你可以使用它了:
fun test() {
val list = ArrayList<CharSequence>()
val str: String? = list.getTypeOrNull(5)
}
【讨论】: