클래스나 함수를 정의할 때 타입을 확실히 정하지 않는 클래스
fun <T> addNumbers(num1: T, num2: T): T {
return (num1.toDouble() + num2.toDouble()) as T
}
→ 타입 T 변수 2개를 더해 타입 T 결과를 반환
fun main(args: Array<String>) {
println(addNumbers(10, 20)) // 결과: 30
println(addNumbers(10.1, 20.1)) // 결과: 30.200000000000003
}
→ 타입을 정하지 않았기 때문에 어떤 타입 인자로 전달될 수 있다
class Rectangle<T>(val width: T, val height: T) {
}
→ 타입 T Rectangle 클래스 정의
class Rectangle<T, K>(val width: T, val height: T, val name: K) {
}
→ 서로 다른 타입 2개를 선언하고 싶을 때 2개의 변수 선언
fun main(args: Array<String>) {
val rec = Rectangle<Double>(10, 20)
val rec1 = Rectangle<String>("aa", "bb")
}
→ 클래스를 생성
→ 코틀린은 타입을 추론하기 때문에 명시적으로 T를 작성할 필요는 없음
class Rectangle<T: Number>(val width: T, val height: T) {
fun getArea(): T {
return (width.toDouble() * height.toDouble()) as T
}
}
→ 특정 형식의 인자만 받도록 허용