애너테이션 선언과 적용
클래스를 애노테이션 인자로 지정할 때는 @MyAnnotation(MyClass::class)처럼 ::class를 클래스 이름 뒤에 넣어야 한다.
다른 애노테이션을 인자로 지정할 때는 인자로 들어가는 애노테이션의 이름 앞에 @를 넣지 않아야 한다.
배열을 인자로 지정하려면 arrayOf
함수를 사용해야한다.
애너테이션 대상
- property : 프로퍼티 전체
- field : 프로퍼티에 의해 생성되는 필드
- get : 프로퍼티 게터
- set : 프로퍼티 세터
- receiver : 확장 함수나 프로퍼티의 수신 객체 파라미터
- param : 생성자 파라미터
- setparam : 세터 파라미터
- delegate : 위임 프로퍼티의 위임 인스턴스를 담아둔 필드
- file : 파일 안에 선언된 최상위 함수와 프로퍼티를 담아두는 클래스
메타 애노테이션: 애노테이션을 처리하는 방법 제어
애노테이션 클래스에 적용할 수 있는 애노테이션(@Target
)