애노테이션과 리플렉션
어떤 함수를 호출하기 위해서는 그 함수가 정의된 클래스의 이름과 함수 이름, 파라미터 이름 등을 알아야한다.
Annotation과 Reflection을 사용하면 그런 제약을 벗어나서 미리 알지 못하는 임의의 클래스를 다룰 수 있다.
Annotation을 사용하면 라이브러리가 요구하는 의미를 클래스에게 부여할 수 있다
Reflection을 사용하면 실행 시점에 컴파일러 내부 구조를 분석할 수 있다.
코틀린에서 Annotation을 사용하는 방법은 자바와 똑같지만 Annotation을 선언할 때 사용하는 문법은 자바와 약간 다르다.
Reflection 역시 일반 구조는 자바와 같지만 세부 사항에는 약간의 차이가 있다.