Kotlin 泛型中 "*" 和 "Any" 的區別


在任何程式語言中,泛型都是一項強大的功能,使用它,開發人員可以建立自定義資料型別以使用不同的方式處理程式。有許多方法可以在 Kotlin 中定義泛型。

在本文中,我們將演示 Kotlin 中 "*" 和 "Any" 關鍵字之間的區別。

  • 當我們使用 "*" 定義集合時,它應該僅包含該型別的物件。集合內部的資料型別之間不應有任何混合和匹配。

  • 如果我們使用 “Any”,我們可以混合和匹配資料型別,這意味著我們可以在集合中有多個數據型別。

示例 - “*” 的用法

fun main(args: Array<String>) {
   val num = arrayOf(1, 2, 3, 4)
   ArrayUtil().findElement(num,2)
}

class ArrayUtil(){

   // passing generic array to a function
   fun findElement(array:Array<*>,element:Int){
      for(i in array.indices){
         if(array[i]==element){
            println("Element found at " +i)
         }
      }
   }
}

輸出

它將生成以下輸出

Element found at 1

示例 - “Any” 的用法

fun main(args: Array<String>) {
   var objet = genericsExample<String>("JAVA")
   var objet1 = genericsExample<Int>(10)
}

class genericsExample<Any>(input:Any?) {
   init {
      println("I am getting called with the value "+input)
   }
}

輸出

它將生成以下輸出

I am getting called with the value JAVA
I am getting called with the value 10

更新於: 2021-11-23

2K + 瀏覽量

開啟你的 職業生涯

完成課程獲得認證

開始
廣告