728x90
제네릭은 타입을 파라미터로 가지는 클래스와 인터페이스를 정의하는 프로그래밍 기법입니다. 제네릭을 사용하면 다양한 타입의 객체를 사용할 수 있으며, 컴파일 시간에 타입 안정성을 제공하므로 코드의 재사용성과 유연성을 높입니다.
- 제네릭 클래스
제네릭 클래스는 하나 이상의 타입 파라미터를 가질 수 있습니다. 이 파라미터는 클래스 내에서 변수나 함수의 타입으로 사용됩니다.
예제:
class Box<T>(val content: T)
val intBox = Box(1)
val stringBox = Box("Hello")
println(intBox.content) // 출력: 1
println(stringBox.content) // 출력: Hello
이 예제에서 Box
클래스는 T
타입 파라미터를 가집니다. Box(1)
로 Box<Int>
인스턴스를 생성하고 Box("Hello")
로 Box<String>
인스턴스를 생성할 수 있습니다.
- 제네릭 함수
제네릭 함수는 함수 선언에 타입 파라미터를 포함합니다. 이 함수는 호출 시에 다양한 타입으로 사용될 수 있습니다.
예제:
fun <T> printContent(box: Box<T>) {
println(box.content)
}
printContent(intBox) // 출력: 1
printContent(stringBox) // 출력: Hello
이 예제에서 printContent
함수는 Box<T>
타입 파라미터를 가집니다. printContent(intBox)
나 printContent(stringBox)
로 다양한 타입의 Box
인스턴스를 인자로 넘길 수 있습니다.
제네릭은 코드의 재사용성을 높이고 타입 안정성을 제공하는데 중요한 역할을 합니다. 제네릭을 사용하면 한 코드가 다양한 타입에 대응할 수 있으므로 개발 과정에서 훨씬 더 유연하고 안정적인 프로그램을 만들 수 있습니다.
728x90