YSHUSH

Generic 본문

Coding/Kotlin

Generic

코딩; 2022. 1. 27. 16:05

 

 

Generic템플릿, 형태라는 뜻
<T>

 

 

자바에서는

class Box<T>{   // 자료형 변수
    private T value;

    Box(T value){
        this.value = value;
    }
    public T getValue(){
        return value;
    }
}

자료형 변수로 이렇게 사용했었다.

 

코틀린에서는

class Box<T>(var value: T)

이렇게만 쓰면 끝!

 

함수호출부

fun main(args: Array<String>) {

    val box:Box<Int> = Box<Int>(123)
    println(box.value)
    
    val sBox:Box<String> = Box<String>("my world")
    println(sBox.value)

    val iBox = Box(234)
    println(iBox.value)

}

 


 

함수로 이용

fun<T> add(a:T, b:T, op:(T, T) -> T): T{
    return op(a, b)
}

함수호출부

fun main(args: Array<String>) {

    var result = add(3, 4, { a, b -> a + b})
              // add(3, 4) { a, b -> a + b }
    println(result)

}

 


 

또 다른 사용

class MyClass<T1, T2>(n1:T1, n2:T2){
    var num1 = n1
    var num2 = n2

//    fun func(){
//        return num1 + num2
//    } -> 연산은 안됨
}

함수호출부

fun main(args: Array<String>) {

    val cal:MyClass<Int, Double> = MyClass<Int, Double>(34, 123.456)
    println(cal.num1)
    println(cal.num2)

//    fun func(){
//        return num1 + num2
//    } -> 안됨

    println(cal.num1 + cal.num2)
}

'Coding > Kotlin' 카테고리의 다른 글

Map  (0) 2022.01.27
List  (0) 2022.01.27
Composition  (0) 2022.01.27
클래스 상속  (0) 2022.01.27
Interface  (0) 2022.01.27