Kotlin

[Kotlin] Generic

98kg 2024. 3. 15. 16:18
Generic

클래스나 함수에 사용하는 자료형을 외부에서 지정할 수 있는 기능
함수나 클래스를 선언할 때 고정적인 자료형 대신 실제 자료형으로 대체되는 
타입 파라미터를 받아 사용하는 방법

 

 

 

fun <T> genericFunc(param:T):T
class GenericClass<T>(var pref:T)

<T>  이 부분에서 특정 자료형을 할당하면 제네릭을 사용하는 모든 코드는 할당받은 자료형으로 대체되어 컴파일 된다

 

fun main() {
   UsingGeneric(A()).doShouting()
   UsingGeneric(B()).doShouting()
   UsingGeneric(C()).doShouting()
   doSouting(B())
}

fun <T:A> doSouting(t:T){
    t.shout()
}
open class A{
    
    open fun shout(){
        println("A가 소리친다")
    }
}

open class B : A(){
    
    override fun shout(){
        println("B가 소리친다")
    }
}

open class C:A(){
    
    override fun shout(){
        println("C가 소리친다")
    }
}
class UsingGeneric<T:A> (val t:T){
    fun doShouting(){
        t.shout()
    }
}