kotlin

kotlin - generic

slow333 2023. 3. 27. 21:34

기본 적으로 java와 동일함

sample code

class Finder(private val list: List<String>){
   fun findItem(element: String, foundItem: (element:String?) -> Unit){
      val itemFoundList = list.filter {
         it == element
      }
      if (itemFoundList.isNullOrEmpty()) foundItem(null)
      else foundItem(itemFoundList.first())
   }
}

class FinderGeneric<T>(private val list: List<T>){
   fun findItem(element: T, foundItem: (element:T?) -> Unit){
      val itemFoundList = list.filter {
         it == element
      }
      if (itemFoundList.isNullOrEmpty()) foundItem(null)
      else foundItem(itemFoundList.first())
   }
}

fun main(){
   val listOfItems = listOf("Rafael", "gina", "george", "kim", "lee")
   val finder = Finder(listOfItems)
   finder.findItem(element = "kim lee"){
      println("I found String $it")
   }

   val listOfInt = listOf(3,5,6,7,89,29)
   val listOfGeneric = FinderGeneric(listOfInt)
   listOfGeneric.findItem(6){
      println("I found generic type Int $it")
   }
   val listOfGenericTypeClass = FinderGeneric(listPerson)
   listOfGenericTypeClass.findItem(element = Person(name = "kim", age = 44)){
      println(it)
   }
}