리플렉션

최희창·2022년 7월 18일
0

Kotlin

목록 보기
10/13

리플렉션(reflection) 이란

  • 런타임에 프로그램의 클래스를 조사하기 위해서 사용되는 기술입니다. 즉, 프로그램이 실행중일 때 인스턴스 등을 통해 객체의 내부 구조 등을 파악할 수 있습니다.
    (Spring에서는 이 기술을 적극적으로 활용하고 있습니다.)
  • 대표적으로 어노테이션의 활용입니다.

코틀린에서의 리플렉션

  • 코틀린에서 액티비티를 넘길 때 .java를 붙여 코드를 작성하는 것을 볼 수 있습니다. 그 이유는 자바에서 쓰는 클래스와 코틀린에서 쓰는 클래스가 다르기 때문입니다.

  • 자바에서는 Class를 리턴하는 반면, 코틀린에서는 클래스명::class를 하게 되면 KClass를 리턴합니다. 그렇기 때문에 KClass를 Class로 바꿔줘야 하는데 이때 .java를 붙여 자바 클래스 값을 받습니다.

  • 코틀린에서는 자바 리플렉션 뿐만 아니라 이를 코틀린 레벨로 추상화한 코틀린 리플렉션을 별도로 제공해주고 있습니다.

  • 런타임 때 동적으로 클래스를 분석하려면 클래스에 대한 정보가 필요한데 이 클래스에 대한 정보를 클래스 레퍼런스라고 표현합니다.

  • 클래스 타입은 KClass<*>로 표현하며 대입하는 클래스 레퍼런스는 "클래스명::class"로 표현합니다.

val myVal:KClass<String> = String::class
val myVal2:Class<*> = String::class.java
profile
heec.choi

0개의 댓글