#애너테이션
- 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해 주는 문법 요소
- 애너테이션의 사용
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
- 함수형 인터페이스를 선언할 때, 컴파일러가 함수형 인터페이스 조건을 확인하게 한다.
- 함수형 인터페이스는 한 개의 추상 메서드만 가져야 한다. (그렇지 않을 시 컴파일러에서 에러발생)
'개발지 > Today I learn' 카테고리의 다른 글
[0824-25] 자바 람다식(람다식, 함수형 인터페이스) (0) | 2023.08.25 |
---|---|
[0823] 자바 애너테이션 (메타 애너테이션, 사용자 정의 애너테이션) (0) | 2023.08.23 |
[0816] 자바 컬렉션프레임워크 (Iterator, Set<E>, Map<K, V>) (0) | 2023.08.17 |
[0810] 자바 컬렉션프레임워크 (List) (0) | 2023.08.10 |
[0810] 자바 컬렉션 4 (컬렉션 프레임워크) (0) | 2023.08.10 |