References: Do it! 코틀린 프로그래밍

코틀린에서의 어노테이션 클래스에 대해 알아봅니다.

 

 

1. 어노테이션(Annotation) 클래스

 

어노테이션은 코드에 부가 정보를 추가하는 역할을 합니다.

@기호와 함께 나타내는 표기법입니다.

주로 컴파일러나 프로그램 런타임에서 사전 처리를 위해 사용합니다.

 

 

2. 어노테이션의 사용

 

사용자 정의 어노테이션을 만들기 위해서는 annotation 키워드를 사용해 클래스를 선언합니다.

선언한 어노테이션 클래스는 @기호와 함께 사용할 수 있습니다.

 

annotation class AnnoTest
...
@AnnoTest class MyClass{ ... }

 

어노테이션은 다음과 같은 속성을 사용해 정의될 수 있습니다.

  • @Target : 어노테이션이 지정되어 사용할 종류를 정의
  • @Retention : 어노테이션을 컴파일된 클래스 파일에 저장할 것인지 런타임에 반영할 것인지 정의
  • @Repeatable : 어노테이션을 같은 요소에 여러번 사용 가능하게 할지를 정의
  • @MustBeDocumented : API의 일부분으로 문서화하기 위해 사용.

위와 같은 속성과 함께 정의된 어노테이션 클래스의 예는 다음과 같습니다.

 

@Target( AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
             AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION )
@Retention( AnnotationRetention.SOURCE ) // or RUNTIME
@MustBeDocumented
annotation class AnnoTest

 

 

3. 어노테이션의 위치

 

어노테이션이 들어갈 수 있는 위치는 다음과 같습니다.

 

@AnnoTest class MyClass {
    @AnnoTest fun myMethod( @AnnoTest myProperty: Int): Int {
        return( @AnnoTest 1 )
    }
}

 

어노테이션은 클래스앞, 메서드 앞, 프로퍼티 앞에서 사용 가능하며 반환 시 반환 값 앞에 표기하고 소괄호로 감싸줍니다.

 

만약 생성자 앞에 어노테이션을 사용하면 constructor 키워드를 반드시 명시해야 합니다.

 

class MyClass @AnnoTest constructor( dependency: MyDependency ) { ... }

 

어노테이션은 게터/세터에서도 사용할 수 있습니다.

 

class MyClass {
    var x: MyDependendcy? = null
        @AnnoTest set
}

 

 

4. 어노테이션의 매개변수와 생성자.

 

어노테이션에 매개변수를 지정하려면 다음과 같이 생성자를 통해 지정할 수 있습니다.

 

annotation class Special( val why: String )
@Special( "example" ) class MyClass{ ... }

 

매개변수로 사용될 수 있는 자료형은 다음과 같습니다.

  • 기본 자료형
  • 열거형
  • 문자형
  • 기타 어노테이션
  • 클래스
  • 위의 목록을 갖는 배열

 

 

 

 

반응형

'Programming' 카테고리의 다른 글

[Kotlin] 37. 제네릭  (0) 2019.09.17
[Kotlin] 36. 연산자 오버로딩  (0) 2019.09.16
[Kotlin] 34. 봉인 클래스와 열거형 클래스  (0) 2019.09.16
[Kotlin] 33. 내부 클래스  (0) 2019.09.16
[Kotlin] 32. 데이터 클래스  (0) 2019.09.12

+ Recent posts