본문 바로가기

Programinng/Java

자바(Java) - Annotation 어노테이션

자바에서 Annotation은 소스코드에 주석을 다는 일이다.

별도의 properties파일이나 xml같은 설정파일에 작성하는 부가적인 정보를 어노테이션으로 간편하게 설정할 수 있으므로, 코드의 양을 줄일 수 있다. 


어노테이션은 @를 붙여 사용하며, 우리가 흔히 볼 수 있었던 어노테이션에는 @Override, @Deprecated 등이 있다.


어노테이션은 아래와 같이 사용자가 정의해서 쓸 수 있다.


@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Anno { 
    public String defaultVal() default "OK"
    public String val(); 
}


여기서 Target은 어노테이션을 적용할 대상을 선택하고, Retention은 이 어노테이션의 정보가 어디까지 유지되는지 지정한다.


@Target - Constructor, Field, Enum, Local Variable, Method, Package, Parameter, Type(Class)

@Retention - Source, Class, Runtime

@Documented - 어노테이션을 javadoc에 포함한다.

@Inherited - 어노테이션 상속을 가능케 한다.


다음은 위에 정의한 어노테이션을 어떻게 사용하는지 보겠다.


@Anno(val = "Annotation!!"
public class Member { 
.....
}


Target을 TYPE인 클래스에 했으므로 위와 같이 클래스 위에 어노테이션을 사용하고, 아래와 같은 방식으로 어노테이션의 정보를 알아 올 수 있다.


Member member = new Member(); 
System.out.println(member.getClass().getAnnotation(Anno.class).val()); 
System.out.println(member.getClass().getAnnotation(Anno.class).defaultVal());


결과는

Annotation!!

OK