Week 12
2022. 8. 27. 22:00
728x90
목표
자바의 애노테이션에 대해 학습하세요.
학습할 것
- 애노테이션 정의하는 방법
- @retention
- @target
- @documented
- 애노테이션 프로세서
1. 애노테이션 정의하는 방법
애노테이션이란 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공하는 것이다.
애노테이션 정의 후에 이런 식으로 쓰면 됨
@author
@since
public class Ex01 {
...
}
애노테이션은 위의 사진처럼 정의하면 된다.
2. @Retention
@Retention은 메타 애노테이션이며(메타 애노테이션이란 애노테이션을 위한 애노테이션이라고 생각하면 됨), 애노테이션이 유지되는 범위를 지정하는데 사용함
1. 컴파일러에 의해 사용되는 애노테이션의 유지 정책(SOURCE)
@Target(ElementType.METHOD)
@Retention(REtentionPolicy.SOURCE)
public @interface Override {}
2. 실행시에 사용 가능한 애노테이션 정책(RUNTIME)
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface{}
3. @Target
@target은 애노테이션이 적용가능한 대상을 지정하는데 사용함
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
4. @Documented
애노테이션 정보가 javadoc으로 작성된 문서에 포함되게 함
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface{}
5. 애노테이션 프로세서
애노테이션 프로세서라는 것은 컴파일 시점에 어떠한 특정 애노테이션이 있는 소스코드를 참조하여 새로운 소스코드를 만들 수 있게 하는 기능이다. 이 때 생성되는 소스코드는 자바일 수도 있고 다른 코드일 수도 있다.
<애노테이션 프로세서 사용 예시>
1. 롬복(Lombok) -> @Getter, @Setter 등 생성
2. @OverRide
.
.
.
.
등
<애노테이션 프로세서 장점>
1. 런타임 비용이 들지 않음
<애노테이션 프로세서 단점>
기존 클래스 코드를 변경할 때는 약간의 hack이 필요하다.
'Java & Spring > WhiteShip Study' 카테고리의 다른 글
Week 14 (2) | 2022.09.10 |
---|---|
Week 13 (0) | 2022.09.03 |
Week 11 (0) | 2022.08.20 |
Week 10 (0) | 2022.08.13 |
Week 09 (0) | 2022.08.06 |