Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Port already in use: 9999
- kafkaCLI
- 객체
- docker
- Oracle.DatabaseError
- redis 명령어
- REST 성숙도 모델
- 예측 범위 내의 요구사항
- Exception Handing
- 특정 행
- 도커
- 쿠버네티스 패턴
- 의존성 패키지 설치
- 의존성 설치
- 선언적 배포
- redis 외부설정
- 오프라인 설치
- ubuntu redis
- 웹 애플리케이션 요청 흐름
- 자료구조
- 포함 관계
- redis 설정
- image 압축
- 특정 행 출력
- abstract 제어자
- 폐쇄망
- 웹 애플리케이션 아키텍처
- SQL 내장 함수
- 예외 전가
- apt-rdepends
Archives
- Today
- Total
리꾸므
[JAVA] 애너테이션 본문
애너테이션
주석은 소스 코드를 읽는 '사람'에게 정보를 제공하는 반면, 애너테이션은 특정 코드를 사용하는 '프로그램'에게 정보를 전달한다.
- 컴파일러에게 문법 에러를 체크하도록 정보를 제공한다.
- 프로그램을 빌드할 때 코드를 자동생성할 수 있도록 정보를 제공한다.
- 런타임에 특정 기능을 실행하도록 정보를 제공한다.
표준 애너테이션 | 설명 : 자바에서 기본으로 제공하는 애너테이션 |
@Override | - 메서드 앞에만 붙이는 애너테이션 - 상위클래스의 메서드를 오버라이딩하는 메서드라는 것을 컴파일러에게 알려준다. - 상위클래스에서 @Override가 붙어있는 메서드명과 동일 메서드를 찾을 수 없으면 컴파일 에러 발생 - 오버라이딩 중 코드 오타로 오버라이딩이 안될때 있는데 이러한 경우를 방지하기 위해 사용 |
@Deprecated | - 새로운 버전의 JDK가 소개되어 더이상 사용하지않는 필드나 메서드 경우, 애너테이션이 붙은 대상이 새로운 것으로 대체되었으니 기존의 것을 사용하지 않는 것을 권장하는데 사용 |
@Functionallnterface | - 함수형 인터페이스를 선언할 때 컴파일러가 함수형 인터페시의 선언이 바르게 되었는지 확인 - 코드 작성과정에서 실수를 방지하기 위한 확인용 애너테이션 * 함수형 인터페이스는 단 하나의 추상 메서드만을 가져야하는 제약이 있다. |
@SuppressWarning | - 컴파일 경고 메시지가 나타나지않도록 한다. - 뒤에 괄호를 붙이고 그 안에 억제하고자하는 경고 메시지 지정 가능(ex:SuppressWarning("all")) - all : 모든 경고를 억제 - deprecation : Deprecated 메서드 사용한 경우 나오는 경고 억제 - fallthrough : switch문에서 break 구문이 없을 떄 경고 억제 - finally : finally 관련 경고 억제 - null : null 관련 경고 억제 - unchecked : 검증되지 않은 연산자 관련 경고 억제 - unused : 사용하지 않는 코드 관련 경고 억제 *둘이상의 경고를 한번에 묵인가능(ex:SuppressWarning("deprecation","unused")) |
메타 애너테이션 | 설명 : 애너테이션에 붙이는 애너테이션, 애너테이션을 정의하는데 사용 |
@Target | - 애너테이션을 정의할 때 적용 대상을 지정하는데 사용한다. - 뒤에 괄호를 붙이고 적용하고자하는 대상 지정 가능(ex:@Target({FIELD, TYPE_USE}) - ANNOTATION_TYPE : 애너테이션 - CONSTRUCTOR : 생성자 - FIELD : 필드(멤버변수, 열거형 상수) - LOCAL_VARIABLE : 지역변수 - METHOD : 메서드 - PACKAGE : 패키지 - PARAMETER : 매개변수 - TYPE : 타입(클래스, 인터페이스, 열거형) - TYPE_PARAMETER : 타입 매개변수 - TYPE_USE : 타입이 사용되는 모든 대상 |
@Documented | - 애너테이션 정보를 javadoc으로 작성된 문서에 포함시킨다. - 자바에서 제공하는 표준, 메타 애너테이션 중 @Override, @SuppressWarninge를 제외하고 모두 적용되어 있다. |
@Inherited | - 하위클래스가 애너테이션을 상속받도록 한다. - 하위 클래스에 붙이면 하위클래스도 상위클래스에 붙은 애너테이션들이 동일하게 적용된다. |
@Retention | - 특정 애너테이션이 유지되는 기간을 정하는데 사용한다. - 유지정책 종류는 세가지이다. - SOURCE : 소스 파일에 존재, 클래스파일에는 존재하지 않음 - CLASS : 클래스 파일에 존재, 실행시에 사용불가, 기본값 - RUNTIME : 클래스 파일에 존재, 실행시에 사용가능 |
@Repeatable | - 애너테이션을 여러번 붙일 수 있도록 허용 |
사용자 정의 애네테이션 : 사용자가 직접 애너테이션을 정의해서 사용하는 것
@interface 애너테이션명 { // 인터페이스 앞에 @기호만 붙이면 애너테이션을 정의할 수 있습니다.
타입 요소명(); // 애너테이션 요소를 선언
}
*애너테이션은 java.lang.annotation 인터페이스를 상속받기 때문에 다른 클래스나 인터페이스를 상속받을 수 없다.
'발걸음 > 일지' 카테고리의 다른 글
[JAVA]Thread (0) | 2022.11.15 |
---|---|
[JAVA] Stream(feat. Optional<T>) (0) | 2022.11.14 |
[JAVA]컬렉션 프레임워크 (0) | 2022.11.10 |
[JAVA] Exception Handing(feat. try - catch) (0) | 2022.11.10 |
[JAVA] Generic (0) | 2022.11.10 |