본문 바로가기
Study/Java Study

자바스터디 8주차 (2)

by hongchii 2021. 7. 4.
728x90
반응형

 

2021.06.28 - [Study/Java Study] - 자바스터디 8주차 (1)

 

자바스터디 8주차 (1)

2021.06.23 - [Study/Java Study] - 자바스터디 7주차 (2) 자바스터디 7주차 (2) 2021.06.22 - [Study/Java Study] - 자바스터디 7주차 (1) 자바스터디 7주차 (1) 2021.06.19 - [Study/Java Study] - 자바스터디 6..

hong-chii.tistory.com

 

 

3. 애너테이션

3.1 애너테이션이란?

프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 애너테이션이다.

애너테이션을 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점이 있다.

예를 들어 '@Test'라는 에너테이션을 메서드 앞에 붙이면 이 메서드를 테스트해야한다는 것을 테스트 프로그램에 알리는 역할을 할 뿐, 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다.

 

 

3.2 표준 애너테이션

 

@Override

메서드 앞에만 붙일 수 있는 애너테이션으로, 조상의 메서드를 오버라이딩하는 것이라는 걸 컴파일러에게 알려주는 역할을 한다.

 

@Deprecated

더 이상 사용되지 않는 필드나 메서드에 붙이면, 이 애너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을 권한다는 의미이다.

 

@FunctionalInterface

함수형 인터페이스를 선언할 때, 이 애너테이션을 붙이면 컴파일러가 올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킨다. 

 

@SuppressWarnings

컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해준다.

 

@SafeVarargs

이 애너테이션은 static이나 final이 붙은 메서드와 생성자에만 붙일 수 있다. 즉, 오버라이드될 수 있는 메서드에는 사용할 수 없다는 뜻이다. 경고를 억제하기 위해 사용한다.

 

3.3 메타 애너테이션

메타 애너테이션은 애너테이션에 붙이는 애너테이션으로 애너테이션을 정의할 때 애너테이션의 적용대상(target)이나 유지기간(retention)등을 지정하는데 사용된다.

 

@Target

애너테이션이 적용가능한 대상을 지정하는데 사용된다. 

@Target으로 지정할 수 있는 애너테이션 적용대상의 종류

대상타입 의미
ANNOTATION_TYPE 애너테이션
CONSTRUTOR 생성자
FIELD 필드(멤버변수, enum상수)
LOCAL_VARIABLE 지역변수
METHOD 메서드
PACKAGE 패키지
PARAMETER 매개변수
TYPE 타입(클래스, 인터페이스, enum)
TYPE_PARAMETER 타입 매개변수(JDK1.8)
TYPE_USE 타입이 사용되는 모든 곳(JDK1.8)

@Retention

애너테이션이 유지되는 기간을 지정하는데 사용된다.

유지정책 의미
SOURCE 소스 파일에만 존재. 클래스파일에는 존재하지 않음.
CLASS 클래스 파일에 존재. 실행시에 사용불가. 기본값
RUNTIME 클래스 파일에 존재. 실행시에 사용가능.

@Documented

애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 한다.

 

@Inherited

애너테이션이 자손 클래스에 상속되도록 한다. 

 

@Repeatable

@Repeatable이 붙은 애너테이션은 여러 번 붙일 수 있다.

 

@Native

네이티브 메서드에 의해 참조되는 '상수 필드'에 붙이는 애너테이션이다.

 

 

 

3.4 애너테이션 타입 정의하기

@interface 애너테이션이름 {
	타입 요소이름(); // 애너테이션의 요소를 선언한다.
    ...
}

애너테이션 요소의 규칙

- 요소의 타입은 기본형, String, enum, 애너테이션, Class만 허용된다.
- ()안에 매개변수를 선언할 수 없다.
- 예외를 선언할 수 없다.
- 요소를 타입 매개변수로 정의할 수 없다.

 

 

 

 

 

자바의 정석을 토대로 공부 후 정리한 내용입니다.

 

728x90
반응형

'Study > Java Study' 카테고리의 다른 글

자바스터디 10주차 (1)  (0) 2021.07.12
자바스터디 9주차 (1)  (0) 2021.07.05
자바스터디 8주차 (1)  (0) 2021.06.28
자바스터디 7주차 (2)  (0) 2021.06.23
자바스터디 7주차 (1)  (0) 2021.06.22

댓글