독서관련/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 |