-
[자바] 애너테이션자바 2022. 7. 23. 00:47728x90
1. 표준 애너테이션
@Override
조상의 메서드를 오버라이딩 하는 것이라는 걸 컴파일러에게 알려줌 ( 오버라이딩시 꼭 쓰기 )
@Deprecated
더 이상 사용되지 않는 필드나 메서드 ( 더 이상 사용하지 않을 것을 권유, 강제성은 없다 )
-Xlint 를 사용해서 에러에 대한 내용을 알 수 있다
@FunctionalInterface
함수형 인터페이스를 올바르게 선언했는지 체크해준다
@SuppressWarnings
컴파일러가 보여주는 경고메세지가 나타나지 않게 해준다 ( 특정 메소드에서 나타나는 경고를 억제 시켜준다 )
@SuppressWarnings({"deprecation", "unchecked"}) // 2개도 가능
@SafeVarargs
오버라이딩될 수 있는 메서드에는 사용할 수 없다
2. 메타 애너테이션
애너테이션을 위한 애너테이션으로, 애너테이션으로 애너테이션을 정의할 때 애너테이션의 적용대상이나 유지기간을 지정하는데 사용됨
@Target
애너테이션이 적용가능한 대상을 지정하는것 ( 여러개 지정시 { } 사용 하기 )
@Retention
애너테이션 유지기간을 지정하는데 사용
@Documented
애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 한다
@Inherited
애너테이션이 자손 클래스에 상속되도록 한다.
@Repeatable
보통은 하나의 대상에 한 종류의 애너테이션을 붙이는 데 '@Repeatable' 이 붙은 애너테이션은 여러 번 붙일 수 있다.
@native
네이티브 메서드에 의해 참조되는 '상수 필드'에 붙이는 애너테이션이다
네이티브 메서드 - JVM에 설치된 OS의 메서드를 의미한다3. 애너테이션 타입 정의하기
'@' 기호를 제외하면 인터페이스 정의와 같다
@interface 애너테이션 이름 { 타입 요소이름(); }
애너테이션 요소
애너테이션 요소 - 애너테이션 내에 선언된 메서드
- 반환값이 있다
- 매개변수는 없는 추상 메서드 형태를 가진다.
- 상속을 통해 구현할 필요가 없다.
- 요소들의 값을 다 지정해줘야 한다
- 이름이 있으므로 순서는 중요치 않다
- 각 요소는 기본값을 가질 수 있으며, 기본값이 있는 요소는 애너테이션을 적용할 때 값을 지정하지 않으면 기본값이 사용된다
- 요소가 오직 하나뿐이고 이름이 value인 경우, 애너테이션을 적용할 때 요소의 이름을 생략하고 값만 적어도 된다.
- 요소 타입이 배열인 경우 { }를 사용해 여러 개의 값 지정이 가능하다 ( 기본값도 { } 사용 가능하다. )
- 요소 타입이 배열일 때도 요소의 이름이 value이면 요소의 이름을 생략할 수 있다.
요소의 규칙
- 요소의 타입은 기본형, String, enum, 애너테이션, Class만 허용된다
- ()안에 매개변수를 선언할 수 없다
- 예외를 선언할 수 없다
- 요소를 타입 매개변수로 정의할 수 없다.'자바' 카테고리의 다른 글
[자바] 람다 (0) 2022.07.25 [자바] 쓰레드 (0) 2022.07.23 [자바] 열거형 ( enum ) (0) 2022.07.23 [자바] 제네릭스 (0) 2022.07.22 [자바] 컬렉션 프레임웍 (0) 2022.07.21