1. 애너테이션이란?
: 소스코드와 문서를 하나의 파일로 관리하기 위해 주석 '/**~*/' 로 표현
: 소스코드 중에서 특정 메서드만 테스트하기를 원한다면, '@Test'라는 애너테이션을 메서드 앞에 붙인다.
: 프로그램 자체에는 아무런 영향 X
2. 표준 애너테이션
@override
- 메서드 앞에만 붙일 수 있는 애너테이션으로, 조상의 메서드를 오버라이딩하는 것이라는 걸 컴파일러에게 알려주는 역할
@Deprecated
- 이 애너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을 권한다는 의미
@Functionallnterface
- 컴파일러가 '함수형 인터페이스'를 올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킨다.
- 필수는 아니지만, 붙이면 실수를 방지
@FunctionalInterface
public interface Runnable {
public abstract void run(); // 추상메서드
}
@SuppressWarnings
- 컴파일러가 보여주는 경고메세지가 나타나지 않게 억제해준다.
- 묵인해야 하는 경고가 발생하는 대상에 사용
deprecation | @Deprecated가 붙은 대상을 사용해서 발생하는 경고를 억제할 때 |
unchecked | 지네릭스로 타입을 지정하지 않았을 때 발생하는 경고를 억제할 때 |
rawtypes | 지네릭스를 사용하지 않아서 발생하는 경고를 억제할 때 |
varargs | 가변인자의 타입이 지네릭 타입일 때 발생하는 경고를 억제할 때 |
둘 이상의 경고를 억제 할 때는 괄호{} 추가
@SuppressWarnings({"deprecation", "unchecked", "varargs"})
@SafeVarargs
- 이 메서드의 가변인자는 타입 안정성이 있다고 컴파일러에게 알려 경고 발생 억제
- 메서드를 선언할 때 @SafeVarargs를 붙이면, 이 메서드를 호출하는 곳에서 발생하는 경고도 억제
- static이나 final이 붙은 메서드와 생성자에만 붙일 수 있음 → 오버라이드될 수 있는 메서드에는 사용할 수 없음
- 컴파일 후에도 제거되지 않는 타입을 reifiable타입 / 제거되는 타입을 non-reifiable타입
- 지네릭 타입들은 대부분 non-reifiable타입
★ 습관적으로 @SafeVarargs와 @SuppressWarnings("varargs")를 같이 붙이자!
'Language > java' 카테고리의 다른 글
[Java] 애너테이션_애너테이션 타입 정의하기 (0) | 2022.08.02 |
---|---|
[Java] 애너테이션_메타 애너테이션 (0) | 2022.08.02 |
[Java] 열거형_열거형의 이해 (0) | 2022.07.30 |
[Java] 열거형_열거형에 멤버 추가하기 (0) | 2022.07.30 |
[Java] 열거형_열거형이란? (0) | 2022.07.30 |
댓글