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

코틀린은 자바와의 상호운용성을 높이기 위해 설계되었습니다. 이는 자바에서 정의된 제네릭 타입을 코틀린에서도 활용할 수 있는 것을 의미합니다. 제네릭은 타입 안전성을 보장하면서 유연한 코드를 작성할 수 있도록 도와줍니다.

자바 제네릭 클래스 사용하기

우선, 자바로 작성된 제네릭 클래스를 코틀린에서 사용하는 방법을 알아보겠습니다. 아래는 자바에서 정의한 제네릭 클래스의 예시입니다.

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

위의 Box 클래스는 제네릭을 이용하여 임의의 타입을 담을 수 있는 상자를 정의한 것입니다.

이제, 코틀린에서 이 클래스를 사용해보겠습니다.

fun main() {
    val box = Box<String>()
    box.content = "Hello, Kotlin!"

    val content: String = box.content
    println(content)
}

위의 예시에서는 코틀린에서 Box 클래스를 제네릭으로 사용하고 있습니다. Box 클래스의 타입 매개변수 T의 구체적인 타입은 String으로 지정되어 있습니다.

자바 제네릭 함수 사용하기

자바에서 정의된 제네릭 함수를 코틀린에서 사용하는 것도 가능합니다.

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

위의 doSomething 함수는 제네릭을 이용하여 임의의 타입을 입력으로 받아 그대로 반환하는 예시입니다.

코틀린에서 이 함수를 사용하는 방법은 다음과 같습니다.

fun main() {
    val result: String = Utils.doSomething("Hello, Kotlin!")
    println(result)
}

위의 예시에서는 코틀린에서 Utils 클래스에 정의된 제네릭 함수를 사용하고 있습니다. 입력과 반환 타입을 명시하여 제네릭 함수를 호출하고 있습니다.

결론

코틀린에서 자바에서 정의된 제네릭 타입과 함수를 사용하는 것은 매우 간단합니다. 제네릭을 활용하여 유연하고 안전한 코드를 작성할 수 있으므로, 상호운용성을 고려하여 코드를 작성하거나 이전 코드를 이전하는 경우에 유용하게 사용할 수 있습니다.

더 자세한 내용은 Kotlin 공식 문서를 참고하세요.