일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코드스테이츠 백엔드 부트캠프 합격
- 코드스테이츠 부트캠프
- 메서드
- 해시
- Java
- 백내장
- 금융감독원
- 겜스고
- 코드스테이츠 백엔드 후기
- 코드스테이츠 합격
- codestates 국비지원 1기 합격 후기
- 코드스테이츠 합격 후기
- 코드 스테이츠 백엔드 교육과정
- Code States 백엔드 합격 후기
- 백내장 다초점렌즈 삽입술
- HLB
- 금융감독원 민원신청
- 코테 합격후기
- CodeState 후기
- 에이치엘비
- 금감원
- 백내장 금감원
- 보험금 지급거절
- 백준 알고리즘
- 자바
- Spring
- Gamsgo
- 코드스테이츠 백엔드 교육과정
- 금감원 백내장 민원
- 코드스테이츠 부트캠프 합격 후기
- Today
- Total
개발하는 동그리
[Java] 애너테이션 ( Annotation ) 본문
애너테이션이란!?
프로그램에게 정보를 제공하는 주석이다. (프로그래밍 언어에 영향을 미치지 않음)
- 컴파일러에게 문법 에러를 체크하도록 요청
- 프로그램 작성 시 코드를 자동 생성하도록 정보 제공
- 런타임에 특정 기능을 실행하도록 정보 제공
- 표준 애너테이션 / 메타 에너테이션 / 사용자 정의 애너테이션
표준 애너테이션
기본으로 제공하는 애너테이션
@Override | 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림 |
@Deprecated | 앞으로 사용하지 않을 대상을 알릴 때 사용 |
@FunctionalInterface | 함수형 인터페이스라는 것을 알 |
@SuppressWarning | 컴파일러가 경고메세지를 나타내지 않음 |
@Orverride
메서드 앞에만 붙을 수 있는 애너테이션으로, 선언한 메서드가 상위 클래스의 메서드를 오버라이드 하고 있는 메서드라는 것을 컴파일러에게 제공 ( 동일한 상위 메서드가 없다면 error 발생 )
@Deprecated
버전 업그레이드 등등 이유로 인해 사용하지 않거나 권장하지 않는 필드나 메서드에 사용하지 않는 것을 표시
버전 호환성 문제로 삭제할 수 없을 때 사용 미 권장 에너테이션
@SuppressWarnings
선언한 곳의 컴파일 경고를 무시하는 애너테이션
@SuppressWarnings(" ") 괄호 안에 무시하고자 하는 경고 메시지를 지정할 수 있다.
ex) all / deprecation / finally / null / unused / unchecked 등등
@FunctionalInterface
함수형 인터페이스를 선언할 때 확인해준다. (실수 방지)
함수형 인터페이스는 하나의 추상 메서드만 있어야 하는데 2개일 경우 에러를 발생시켜준다.
메타 애너테이션
애너테이션을 정의하는 데 사용 (적용 범위 or 유지 기간)
@Target | 애너테이션을 정의할 때 적용 대상을 지정하는데 사용한다. |
@Documented | 애너테이션 정보를 javadoc으로 작성된 문서에 포함시킨다. |
@Inherited | 애너테이션이 하위 클래스에 상속되도록 한다. |
@Retention | 애너테이션이 유지되는 기간을 정하는데 사용한다. |
@Repeatable | 애너테이션을 반복해서 적용할 수 있게 한다. |
@Target
애너테이션의 적용범위를 정할 수 있다.
ex) FIELD / METHOD / PACKAGE 등등..
@Documented
애너테이션에 대한 정보가 javadoc 문서에 표기하도록 하는 것
자바에서 제공하는 표준 애너테이션과 메타 애너테이션 중 @Override와 @SuppressWarning을 제외하고는 모두 @Documented 가 적용되어 있다.
@Inherited
@Inherited 애너테이션을 상위 클래스에 작성하면, 하위 클래스들에도 모두 애너테이션이 적용된다.
@Retention
@Retention 애너테이션은 속성으로 유지되는 기간을 지정하는 속성이다.
ex). SOURCE / CLASS / RUNTIME
* SOURCE : .java 소스 파일까지는 존재하고 클래스 파일이 되면 사라짐
* CLASS : .class 파일까지 애너테이션이 존재하고 런타임에서 사라짐
* RUNTIME : 런타임 실행 시까지도 애너테이션이 남아있음
@Repeatable
@Repeatable 애너테이션이 붙은 애너테이션은 반복해서 작성할 수 있다.
!!??
사용자 정의 애너테이션
애너테이션을 직접 정의하는 것이다. 방법은 인터페이스를 정의하는 것과 유사하다.
애너테이션은 java.lang.annotation 인터페이스를 상속받으므로, 다른 클래스나 인터페이스를 상속받을 수 없다.
@interface 애너테이션명 {
타입 요소명();
}
위와 같은 방식으로 정의할 수 있다.
'IT 정보 > Java' 카테고리의 다른 글
[Java] 자바의 메모리 영역 (20) | 2022.05.20 |
---|---|
[Java] enum (0) | 2022.05.19 |
[Java] 람다 (Lambda) (8) | 2022.05.19 |
[Java] Collection Framwork (Map편) (26) | 2022.05.18 |
[Java] Collection Framwork (List편) (8) | 2022.05.18 |