【问题标题】:How I can do it: typed Extension for Arraylist我该怎么做:Arraylist 的类型化扩展
【发布时间】: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


    【解决方案1】:

    你真的需要扩展吗?要调用扩展程序,您必须传递 T 的具体类型,对吧?否则,他的函数不知道要检查哪种类型。

    怎么样简单:

    yourResult = yourList[5] as? ConcreteT
    

    【讨论】:

      【解决方案2】:

      我认为您必须检查要求,因为该功能看起来很奇怪:

      但如果你真的需要它:

      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)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 2014-12-06
        • 1970-01-01
        • 2018-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多