특정 코드를 사용하는
프로그램
에게 정보를 전달하는 역할
주석은 정보 제공의 대상이
사람
임.
애너테이션은 주석과 마찬가지로정보 전달의 목적
을 가지는 점에서 동일하지만정보 전달의 대상
이 다르다는 차이점이 있음
주석은 코드를 설명하는 정보를 제공하는 역할을 한다.
개발자(보통 협업 시)가 코드를 빠르고 직관적으로 코드를 이해할 수 있도록 돕는다.
표준 애너테이션 | 설명 |
---|---|
@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 | 타입이 사용되는 모든 대상 |
하위클래스가 애너테이션을 상속, 하위 클래스도 상위 클래스에 붙은 애너테이션이 동일하게 적용된다.
애너테이션의 지속 기간을 결정
애너테이션을 여러 번 반복해서 사용 가능