제네릭(generic)
- 다양한 타입에 동일한 로직을 적용할 때가 많다.
- 매번 Any 타입으로 받는 건 안정성이 저하될 수 있다.
- 클래스 내부에서 사용할 자료형을 인스턴스를 생성할 때 고정시켜, 컴파일 시간에 자료형을 검색해 적당한 자료형을 선택할 수 있게 함
- 객체 자료형의 안정성을 높이고, 형 변환의 번거로움을 감소
제네릭을 사용하지 않는 함수
fun test(arr: Array<Any>, data: Any): Int{
for(i in arr.indices){
if(arr[i] == data) return i
}
return -1
}
제네릭을 사용한 함수
fun <T> test(arr: Array<T>, data: T): Int {
for(i in arr.indices) {
if(arr[i] == data) return i
}
return -1
}
fun main() {
val obj1: Array<String> = arrayOf("c", "java", "kotlin")
val index = test<String>(obj1, "kotlin")
println(index)
}
참고자료
https://kotlinlang.org/docs/generics.html