Java 표준 어노테이션(Annotation)

어노테이션 중에서 Java SE 표준에서 제공되는 어노테이션을 표준 어노테이션 이라고 한다.

Java SE 8의 시점에서는 다음과 같은 표준 어노테이션이 있다.

@Override 어노테이션: 재정의 명시

그 메소드가 슈퍼 클래스의 메소드를 오버라이드(override) 하고 있는 것을 선언한다. 생략해도 동작 자체에 지장은 없지만, 명시하는 것으로 메소드명이나 인수에 오타가 있는 경우에는 컴파일러가 경고를 발생한다.

예제) 다음은 @override 어노테이션의 예제이다.

public class Animal {
    public void speak() {
    }

    public String getType() {
        return "Generic animal";
    }
}

public class Cat extends Animal {
    @Override
    public void speak() { // This is a good override.
        System.out.println("Meow.");
    }

    @Override
    public String gettype() { // Compile-time error due to mistyped name.
        return "Cat";
    }
}

@Deprecated 어노테이션: 더 이상 사용되지 않는 클래스나 메서드에 선언

그 메소드가 비추천으로 더 이상 사용되지 않을 클래스나 메서드에 선언한다. 이 메소드를 사용한 코드는 컴파일시에 경고를 발생한다.

@Deprecated
public void foo() { ... }

@SuppressWarnings 어노테이션: 경고 메시지 억제

컴파일러가 특정 경고를 발생시키는 것을 억제한다. 예를 들면, 하위 호환성등의 사정으로 비추천의 메소드를 의도해 사용하고 있는 경우에 일일이 경고가 나오는 것은 방해가 된다. 이럴 경우에 이 어노테이션을 선언하여 명시적으로 경고를 끌 수 있다.

@SuppressWarnings("deprecation")
public static void main(String[] args) {
    ClassSample g = new ClassSample();
    g.hoge(); // 비추천 foo 메소드
}

그밖에 @SuppressWarnings 어노테이션에서 사용할 수 있는 설정은 다음과 같다.

@SuppressWarnings 주석의 기본 설정

설정값 경고 내용
cast 불필요한 캐스트
deprecation 비추천 회원 이용
divzero 0으로 나누기
unused 사용되지 않는 변수가 있음

참고




최종 수정 : 2021-08-27