Week 12

2022. 8. 27. 22:00
728x90

목표

자바의 애노테이션에 대해 학습하세요.

학습할 것

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

BELATED ARTICLES

more