특정 코드를 사용하는
프로그램에게 정보를 전달하는 역할
주석은 정보 제공의 대상이
사람임.
애너테이션은 주석과 마찬가지로정보 전달의 목적을 가지는 점에서 동일하지만정보 전달의 대상이 다르다는 차이점이 있음
주석은 코드를 설명하는 정보를 제공하는 역할을 한다.
개발자(보통 협업 시)가 코드를 빠르고 직관적으로 코드를 이해할 수 있도록 돕는다.
| 표준 애너테이션 | 설명 |
|---|---|
| @Override | 컴파일러에게 해당 메서드가 상위 클래스의 메서드를 오버라이딩하는 메서드라는 것을 알림. |
| @Deprecated | 앞으로 사용하지 않을 대상임을 알림. |
| @SuppressWarnings | 컴파일러의 특정 경고메세지를 나타나지 않게 해줌 |
| @FuntionalInterface | 함수형 인터페이스라는 것을 알림 |
| @SafeVarargs | 제네릭 타입의 가변인자에 사용 |
| 메타 이너테이션 | 설명 |
|---|---|
| @Target | 애너테이션을 정의할 때 적용 대상을 지정하는데 사용 |
| @Dcoumented | 애너테이션 정보를 javadoc으로 작성된 문서에 포함시킨다. |
| @Inherited | 애너테이션이 하위클래스에 상속되도록 한다. |
| @Retention | 애너테이션이 유지되는 기간을 정한다. |
| @Repeatable | 애너테이션을 반복해서 적용한다. |
* 사용자 정의 애너테이션: 사용자가 직접 정의한 애너테이션
나중에 알아보자
자바에서 기본으로 제공하는 애너테이션
해당메서드와 동일한 이름의 메서드가 상위클래스에 존재하지 않으면 컴파일러가 에러를 발생시킴
즉 오버라이딩이 잘 안될 때 에러를 발생시킴
class SubClass extends SuperClass {
@Override
void overMethod {} // 상위클래스에 이 메서드 없으면 컴파일러가 오류를 발생시킴
새로운 것으로 대체되었으니 더이상 사용하지 않을 것을 권장
만약 작성한 소스파일 중 @Deprecated가 붙은 필드 혹은 메서드를 사용한다면 컴파일시 메세지가 나타난다.
Note: 파일명.java uses or overrides a deprecated API.
Note: Recomplie with -Xlint:deprecation for details.
-Xlint:deprecation옵션을 붙여서 다시 컴파일하면 더 자세한 내용 확인이 가능
함수형 인터페이스가 올바르게 선언되지 않았으면 에러 발생시킴
함수형 인터페이스는 추상 메서드가 하나만 있어야하는 제약이 있음
컴파일 경고 메세지가 나타나지 않도록 함
경고 메세지가 발생할 것을 알면서도 묵인해야 할 때 사용
@SuppressWarnings("all) 처럼 억제하려는 경고메세지 종류를 괄호안에 문자열로 지정한다.
| 애너테이션 | 설명 |
|---|---|
| @SuppressWarings(”all”) | 모든 경고를 억제 |
| *@SuppressWarings(”deprecation”) | Deprecated 대상을 사용한 경우 나오는 경고 억제 |
| @SuppressWarings(”fallthrough”) | switch문에서 break 구문이 없을 때 경고 억제 |
| @SuppressWarings(”finally”) | finally 관련 경고 억제 |
| @SuppressWarings(”null”) | null 관련 경고 억제 |
| *@SuppressWarings(”unchecked”) | 검증되지 않은 연산자 관련 경고 억제 |
| @SuppressWarings(”unused”) | 사용하지 않는 코드 관련 경고 억제 |
| @SuppressWarning("rawtypes") | 제네릭을 사용하지 않아서 발생하는 경고 억제 |
| @SuppressWarning("varargs") | 가변인자으 ㅣ타입이 제네릭일 때 발생하는 경고를 억제 |
애너테이션을 위한 애너테이션, 애너테이션을 정의하는데 사용
애너테이션을 적용할 대상을 지정
| 대상 타입 | 적용범위 |
|---|---|
| ANNOTATION_TYPE | 애너테이션 |
| CONSTRUCTOR | 생성자 |
| FIELD | 필드(멤버변수, 열거형 상수) |
| LOCAL_VARIABLE | 지역변수 |
| METHOD | 메서드 |
| PACKAGE | 패키지 |
| PARAMETER | 매개변수 |
| TYPE | 타입(클래스, 인터페이스, 열거형) |
| TYPE_PARAMETER | 타입 매개변수 |
| TYPE_USE | 타입이 사용되는 모든 대상 |
하위클래스가 애너테이션을 상속, 하위 클래스도 상위 클래스에 붙은 애너테이션이 동일하게 적용된다.
애너테이션의 지속 기간을 결정
애너테이션을 여러 번 반복해서 사용 가능