본문 바로가기

개발지/Today I learn

[0823] 자바 애너테이션 (표준 애너테이션)

#애너테이션

- 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소

- 애너테이션의 사용

public interface ExampleInterface {
    void example();
}

public class ExampleClass implements ExampleInterface {
    @Override // 애너테이션
    public void example() {
    ...
    }
}

- 애너테이션의 종류

(1) 표준 애너테이션: JDK에 내장된 애너테이션

(2) 메타 애너테이션(사용자 정의 애너테이션): 다른 애너테이션을 정의할 때 사용하는 애너테이션 

 

#표준 애너테이션

(1) @Override

- 메서드 앞에만 붙일 수 있는 애너테이션.

- 선언한 메서드가 상위 클래스의 메서드를 오버라이딩 / 추상 메서드를 구현하는 메서드임을 컴파일러에게 전달.

- 컴파일러가 @Override 를 발견하면, @Override 와 같은 이름을 가진 메서드가 상위 클래스에 존재하는지 검사한다.

  만약 찾을 수 없다면 컴파일러가 컴파일 에러를 발생시킨다.

 

(2) @Deprecated

- 사용하던 기술이 다른 기술로 대체되어 기존 기술이 적용된 코드를 더 이상 사용하지 않도록 유도.

- 기존의 코드를 다른 코드와의 호환성 문제로 삭제할 수 없는 상황에서 사용하는 것을 권장하지 않을 때 사용.

 

(3) @SuppressWarnings

- 컴파일 경고 메시지가 나타나는 것을 방지.

- 경고가 발생하는 것이 예상되는 상황에서 묵인해야 할 때 사용.

- 지정 경고메시지

애너테이션 설명
@SuppressWarnings("all") 모든 경고 억제
@SuppressWarnings("deprecation") Deprecated 메서드를 사용한 경우 발생하는 경고를 억제
@SuppressWarnings("fallthrough") switch문에서 break 구문이 없을 때 발생하는 경고를 억제
@SuppressWarnings("finalyy") finally와 관련된 경고를 억제
@SuppressWarnings("null") null과 관련된 경고를 억제
@SuppressWarnings("unchecked") 검증되지 않은 연산자와 관련된 경고를 억제
@SuppressWarnings("unused") 사용하지 않는 코드와 관련된 경고를 억제

- 중괄호 안에 여러 개의 경고 유형을 나열할 수 있다.

@SuppressWarnings({"fallthrough", "null", "unused"})

 

(4) @FunctionallInterface

- 함수형 인터페이스를 선언할 때, 컴파일러가 함수형 인터페이스 조건을 확인하게 한다. 

- 함수형 인터페이스는 한 개의 추상 메서드만 가져야 한다. (그렇지 않을 시 컴파일러에서 에러발생)