Annotation(어노테이션)
정의
사전적의미로는 주석이라는 말이며, 소스코드에 추가해서 사용할 수 있는 메타 데이터의 일종이다. 메타 데이터란 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야하는지를 알려주기 위한 추가 정보이다.
사용법
자바의 어노테이션은 @(골뱅이) 기호를 앞에 붙여서 사용한다. JDK 1.5 이상부터 가능하다. 컴파일러에게 정보를 제공하기 위해 사용한다. 직접 커스텀할 수 도 있다.
장점
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공
- 소프트웨어 개발 환경이 빌드나 배포시 코드를 자동으로 생성할 수 있도록 정보 제공
- 런타임에 특정 기능을 실행하도록 정보를 제공
종류
@Override
메소드를 오버라이드한다는 의미로, 메소드의 선언 앞에 붙여줌. 만약 상속받은 부모 클래스 또는 구현해야할 인터페이스에서 해당 메소드가 없다면 컴파일 오류가 발생
@Override
public void method() { ... }
Deprecated
이 메소드를 사용하는 애플리케이션을 컴파일할 경우 컴파일 경고가 발생한다. 하위호환을 위해 메소드가 존재하긴 하지만 사용하지 말라고 싶을때 사용.
@Deprecated
public void method() { ... }
SuppressWarnings
컴파일러 경고를 출력하지 않도록 설정. 이 어노테이션은 인자를 받는데, 인자에 따라 의미가 달라진다.
- @SuppressWarnings("all") : 모든 경고를 억제
- @SuppressWarnings("cast") : 타입 캐스트 관련 경고 억제
- @SuppressWarnings("dep-ann") : 사용하지 말아야할 주석 관련 경고 억제
- @SuppressWarnings("deprecation") : Deprecated 메소드를 사용한 경우 발생하는 경고 억제
- @SuppressWarnings("fallthrough") : switch 문에서 break 구문 누락 관련 경고 억제
- @SuppressWarnings("finally") : finally 블럭 관련 경고 억제
- @SuppressWarnings("null") : null 관련 경고 억제
- @SuppressWarnings("rawtypes") : 제너릭을 사용하는 클래스 매개 변수가 특정되지 않았을 때의 경고 억제
- @SuppressWarnings("unchecked") : 검증되지 않은 연산자 관련 경고 억제
- @SuppressWarnings("unused") : 사용하지 않는 코드 관련 경고 억제
Reference : https://hbase.tistory.com/169
SafeVarargs
제너릭 같은 가변인자 매개변수를 사용할 때 경고를 무시
FunctionalInterface
자바에서 람다 함수를 위한 인터페이스를 지정
여담
어노테이션을 커스텀할 수 도 있지만 그건 다음 기회에 포스팅하겠다. 아직까지 나한텐 Too Much 인 것 같다.