fun main(args: Array<String>) {
// 제너릭을 사용하지 않은 경우
// 형변환을 해줘야한다.
val list = listOf(1, 2, 3, "가")
val b: String = list[3].toString() // toString을 통해 String으로 형변환을 해줌
// 제너릭을 사용하는 경우 -> 타입이 안전하다.
val list2 = listOf<String>("a", "b", "c")
val c: String = list2[2] // String이라는 것을 보장받는다.
// 강한 타입을 체크할 수 있다.
val list3 = listOf(1, 2, 3, 4, "가", "나", 3.0)
val list4 = listOf<Int>(1, 2, 3) // 강한 타입 체크
// 제너릭을 사용하지 않은 경우
// 부모 클래스: Any
// 자식 클래스: String, Int, Float
val list5 = listOf(1, 2, 3, "가") // -> 리스트의 인자의 타입은 "Any"이다.
// val list5 = listOf<Any>(1, 2, 3, "가") 와 동일한 코드
}