독서관련/Programming in Scala

Scala CH27. 애노테이션

ColinKang 2020. 3. 29. 13:24
아래의 글은 마틴 오더스키,렉스 스푼,빌 베너스 공저 / 오현석,이동욱,반영록 공역, 『Programming in Scala 3/e』,에이콘출판사(2017), CH01의 내용을 기반으로 작성하였습니다.

 

1. 애노테이션이 왜 필요한가?

메타 프로그래밍 도구, 스칼라는 메타 프로그래밍을 사용할 수 있도록 핵심언어와 직교적인 최소한의 지원만 제공, 애노테이션 시스템, 

컴파일러는 개별 애노테이션에 어떤 의미도 부여하지 않는다.

 

2. 애노테이션 문법

@deprecated def bigMistake()  = ...

 

 

val, var, class, object, trait, type 등 모든 종류의 선언이나 정의에 사용 가능

표현식에 에노테이션 적용

(e: @unchecked) match {

}

 

 

@annot(exp, exp2, ...)

 

 

annot은 애노테이션 클래스를 지정,

스코프에 보이는 다른 변수 참조 가능

 

 

@cool val normal = "Hello"

@coolerThan(normal) val fonzy = "Heeyyy"

즉 @ new로 바꾸면 올바른 인스턴스 생성 표현식이 된다.

애노테이션이 직접 인자로 애노테이션을 쓸수는 없다.

 

3. 표준 애노테이션

@deprecated // 사용금지 경고

@volotile // 컴파일러에게 해당 변수를 여러 스레드가 사용함

@serializable // 이진 직렬화 @SerialVersionUID(1234) @transient // 직렬화 하면 안되는 필드

@get set

@tailrec // 꼬리 재귀 함수

@unchecked

@native