Programming/Back-end(Java, JSP)

[Java] Annotation

Sujin Lee (Daisy) 2020. 4. 18. 01:00

 - Annotaion: 프로그램 소스코드 안에, 다르프로그램을 위한 정보를, 미리 약속된 형식으로 포함시킨 것.

   주석처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에 유용한 정보를 제공할 수 있다.  

 - 표준 애너테이션: 자바에서 기본적으로 제공하는 애너테이션들. 첫번째 표의 5개와 두번표의 meta annotation 5개는 표준 annotation.

Annotation 기능
@Override

컴파일러에게 오버라이딩하는 메서드라는 것을 알린다.

@Override 애노테이션을 붙이면, 메서드의 이름을 잘못 적는 실수를 방지할 수 있다. 

(컴파일러가 같은 이름의 메서드가 조상에 있는지 확인하고 없으면 에러메시지 출력해주기 때문.) 

※ 오버라이딩: 조상 클래스로부터 상속받은 메서드의 내용을 자손클래스에 맞게 변경하는 것. 

@Deprecated 이 애너테이션이 붙은 대상은 다르것으로 대체되었으니 더 이상 사용하지 않는 것을 권한다는 의미. 
@FunctionalInterface 이 애너테이션을 붙이면 컴파일러가 '함수형 인터페이스'를 올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킨다. 
@SuppressWarnings

컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해준다. 

ex) @SuppressWarnings({"deprecation", "unchecked", "varargs"})

@SafeVarargs

메서드에 선언된 가변인자의 타입이 non-reifiable 타입일 경우, "unchecked" 경고가 발생하는데, 해당 코드에 문제가 없다면 @SafeVarargs 써서 이 경고거 뜨지 않게 처리한다.

Meta Annotation 기능
@Target 애너테이션이 적용 가능한 대상을 지정.
@Retention 애너테이션이 유지(retention)되는 기간 지정. 
@Documented 애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 한다.
@Inherited 애너테이션이 자손 클래스에 상속되도록 한다. 
@Repeatable

@Repeatable이 붙은 애너테이션은, 같은 이름의 애너테이션 여러개가 하나의 대상에 적용될 수 있다. 

==> 이 애너테이션들을 하나로 묶어서 다룰 수 있는 앤테이션도 추가로 정의해야 한다. 

@Native

네이티브 메서드에 의해 참조되는 상수 필드에 붙이는 애너테이션이다. 

- Meta Annotation: 애너테이션을 위한 애너테이션. 즉, 애너테이션에 붙이는 애녀테이션으로, 애너테이션을 정의할 때 애너테이션의 적용대상(target)이나 유지기간(retention)을 지정한다. 

출처: 자바의 정석, 남궁성 저 

반응형