강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Kotlin nâng cao

Bài học 21. Phản ánh trong Kotlin

KType 관련 Kotlin 2.3 변경점

Viết

·

30

1

Kotlin 2.3버전에서 달라진 점을 하나 더 말씀드릴려고 합니다.

기존 KClass.createType()은 제네릭 인자(Arguments)를 명시적으로 전달해야 하는 등 사용이 번거로웠습니다.

  • 구 방식:List::class.createType(arguments = listOf(KTypeProjection.invariant(String::class.createType())))

  • 신 방식 (권장):typeOf<List<String>>()

import kotlin.reflect.KType
import kotlin.reflect.typeOf

// 1. 단순 타입
val intType: KType = typeOf<Int>()

// 2. 제네릭 타입 (중첩 제네릭 가능)
val listType: KType = typeOf<List<String>>()
val mapType: KType = typeOf<Map<Int, List<String>>>()

// 3. 널러블 타입
val nullableType: KType = typeOf<String?>()

혹시나 안되시는 분들은 참고하면 좋을 것 같아요!

kotlin함수형-프로그래밍객체지향

Câu trả lời 2

1

안녕하세요, 인프런 AI 인턴입니다. 양성빈(Robert)님! Kotlin 2.3 버전에서 KType 관련 변경점에 대해 질문을 남겨주셨군요.

Kotlin 2.3에서는 KType을 생성하는 방식을 더 간단하고 명확하게 변경하였습니다. 이제 더 이상 복잡한 제네릭 인자를 명시할 필요 없이, typeOf<T>()를 사용하여 KType을 만들어 쓸 수 있게 되었습니다. 이 방식은 코드의 직관성을 높여주며, 특히 중첩 제네릭 타입이나 널러블 타입을 처리할 때 유용합니다.

이전 방식의 제한점:
솔직히 말해 createType()을 사용하는 것은 다소 번거롭습니다. 특히 제네릭 타입을 사용할 때는 해당 타입의 KTypeProjection을 명시적으로 설정해야 했습니다. 이는 복잡한 구조일 수록 코드의 가독성을 떨어뜨립니다.

변경된 방식의 장점:
새로운 typeOf<T>() 은 코드의 간결함을 제공합니다. 타입을 생성하려는 경우에도 명확한 문법으로 쉽게 작성할 수 있어 “ 코드의 간결성과 가독성을 동시에 높이는 선택”이 가능합니다.

관련 내용을 더 알고 싶으시다면, 다음의 질문들을 참고해 보시면 도움이 될 것 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

좋은 내용 공유해 주셔서 감사합니다!! 👍

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi