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

코틀린과 자바는 둘 다 제네릭(Generics)을 지원하는 언어로, 제네릭을 사용하여 타입을 안정적으로 다룰 수 있습니다. 이 기능을 이용하면 코드의 안정성을 높이고, 중복을 줄일 수 있습니다.

코틀린에서의 제네릭 사용하기

코틀린에서 제네릭을 사용하기 위해서는 클래스나 함수 선언 시에 타입 매개변수를 정의할 수 있습니다.

class Box<T>(val value: T)

위의 예제에서 Box 클래스는 타입 T를 받아서 value라는 속성으로 가지고 있습니다. 이렇게 선언된 Box 클래스는 다양한 타입을 받아들일 수 있습니다.

val box = Box(5) // Int 타입의 Box
val box = Box("hello") // String 타입의 Box

자바에서의 제네릭 사용하기

자바에서의 제네릭은 코틀린과 유사하게 사용할 수 있습니다.

public class Box<T> {
    private T value;

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

위의 예제에서 Box 클래스는 제네릭 타입 T를 받아서 value라는 필드로 가지고 있습니다.

Box<Integer> intBox = new Box<>(5); // Integer 타입의 Box
Box<String> strBox = new Box<>("hello"); // String 타입의 Box

제네릭 메서드 만들기

코틀린과 자바에서는 제네릭 메서드를 정의할 수 있습니다.

코틀린에서의 예시:

fun <T> singletonList(item: T): List<T> {
    return listOf(item)
}

자바에서의 예시:

public <T> List<T> singletonList(T item) {
    return Collections.singletonList(item);
}

제네릭을 사용하여 타입을 안정적으로 다루면, 런타임에 발생할 수 있는 에러를 미리 방지할 수 있고, 중복을 피할 수 있습니다.

제네릭은 타입 안정성을 제공하므로, 프로그램 오류를 줄일 수 있으며, 클라이언트 코드의 가독성과 안정성을 높일 수 있습니다.

제네릭은 코드를 더 간결하게 작성하고, 재사용성을 높일 수 있는 강력한 도구입니다.

참고 자료