[kotlin] 코틀린에서 자바 제네릭 사용하기

코틀린은 자바와 완벽하게 상호 운용이 가능하도록 설계되었습니다. 따라서 코틀린에서 자바의 제네릭을 사용하는 것은 매우 간단합니다.

제네릭 클래스 사용하기

코틀린에서 자바로 작성된 제네릭 클래스를 사용하는 방법은 다음과 같습니다.

자바 제네릭 클래스

public class Box<T> {
    private T value;
    
    public void setValue(T value) {
        this.value = value;
    }
    
    public T getValue() {
        return value;
    }
}

코틀린에서 사용하기

코틀린에서는 해당 제네릭 타입을 명시적으로 지정하여 사용할 수 있습니다.

val box: Box<String> = Box()
box.setValue("Hello, Kotlin")
val result: String = box.getValue()

제네릭 메서드 사용하기

자바에서 작성된 제네릭 메서드를 호출하는 방법은 다음과 같습니다.

자바 제네릭 메서드

public class Utils {
    public static <T> T doSomething(T input) {
        // do something with input
        return input;
    }
}

코틀린에서 호출하기

코틀린에서는 다음과 같이 제네릭 메서드를 호출합니다.

val result: String = Utils.doSomething("Hello, Kotlin")

무변성(invariant), 공변성(covariant), 반공변성(contravariant) 지정

코틀린에서는 자바의 무변성, 공변성, 반공변성을 지정할 수 있습니다. 이를 통해 타입 호환성을 더욱 유연하게 다룰 수 있습니다.

// 무변성
class Box<T>(val value: T)

// 공변성
class Box<out T>(val value: T)

// 반공변성
class Box<in T>(val value: T)

코틀린에서 자바 제네릭을 사용하는 방법에 대해 간단히 살펴보았습니다. 코틀린은 자바와의 호환성을 고려하여 제네릭을 사용하는 것을 매우 쉽게 만들어주고 있습니다.

관련 자료: 코틀린 공식 문서