[Java] Annotation(어노테이션)

Pongchi·2022년 12월 18일

Java의 정석

목록 보기
4/6
post-thumbnail

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 인 것 같다.

profile
- I'm going to be a ???

0개의 댓글