کلاس جنریک

تعریف یک کلاس جنریک بسیار شبیه به تعریف یک تابع جنریک است. کلاس جنریک دارای یک علامت بزرگتر و کوچک‌تر و یک نوع پارامتر خاص می‌باشد. برنامه زیر مثالی از یک کلاس جنریک می‌باشد :

  1: class GenericClass<T>(private var someField: T?)
  2: {
  3:     fun getSomeProperty(): T?
  4:     {
  5:         return someField
  6:     }
  7: }
  8: 
  9: fun main(args: Array<String>)
 10: {
 11:     val genericDouble = GenericClass(30.50)
 12:     val genericString = GenericClass("Hello World!")
 13: 
 14:     println("Double Value : ${genericDouble.getSomeProperty()}")
 15:     println("String Value : ${genericString.getSomeProperty()}")
 16: }
Double Value : 30.5
String Value : Hello World!

در مثال بالا یک کلاس جنریک (خطوط 7-1) که دارای یک فیلد (خط 1) و یک تابع (خطوط 6-3) است را ایجاد می‌کنیم. تمام مکانهایی که ورودی T در آنها قرار دارد بعداً توسط انواعی که مد نظر شما است، جایگزین می‌شوند. وقتی یک نمونه از کلاس جنریک تان ایجاد می‌کنید، یک نوع هم برای آن در نظر بگیرید (<int>). مانند توابع جنریک می‌توانید چندین نوع پارامتر به کلاسهای جنریک اختصاص دهید.

class GenericClass<T1, T2, T3> 
{
    private val someField1: T1? = null
    private val someField2: T2? = null
    private val someField3: T3? = null
}