Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 셋업
- EL태그
- 설정
- 알고리즘
- SESSION
- 설치
- html
- jsp 내부객체
- 깃허브
- Oracle
- jquery
- springboot
- 자바스크립트
- 자바
- 스프링
- 오라클
- MySQL
- 버튼
- 마이바티스
- 필터체인
- jstl
- 이클립스
- Spring
- 폼태그
- Eclipse
- 깃허브 간단요약
- jsp
- java
- 면접
- 제이쿼리
Archives
- Today
- Total
은은하게 코드 뿌시기
[java] @Target , @Retention/메타애너테이션 본문
728x90
@Target, @Retention 애너테이션은 메타 애너테이션에 해당된다.
메타 애너테이션 이란?
:애너테이션을 위하 애너테이션, 애너테이션에 붙이는 애너테이션으로 애너테이션을 정의 할때
애너테이션의 적용대상이나 유지기간등을 지정하는데 사용된다.
@Target
: 애너테이션이 적용가능한 대상을 지정하는데 사용된다.
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUNCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings{ String[] value; } |
@SuppressWarnings 를 정의한 예제 |
대상타입 | 의미 |
ANNOTATION_TYPE | 애너테이션 |
CONSTRUCTOR | 생성자 |
FIELD | 필드(멤버변수, enum상수), 기본형 |
LOCAL_VARIABLE | 지역변수 |
METHOD | 메서드 |
PACKAGE | 패키지 |
PARAMETER | 매개변수 |
TYPE | 타입(클래스, 인터페이스, enum) 타입을 선언할때, 애너테이션을 붙일 수 있음. |
TYPE_PARAMETER | 타입 매개변수 |
TYPE_USE | 타입이사용되는 모든곳 , 참조형 해당 타입의 변수를 선언할 때 붙일수있다. |
@Retention
: 애너테이션이 유지 되는 기간을 지정하는데 사용된다. 애너테이션의 유지정책 (RetentionPolicy) 의 종류는
아래와같다
SOURCE | 소스 파일에만 존재, 클래스 파일에는 존재하지 않음 -> 컴파일러가 사용하는 애너테이션 |
CLASS | 클래스 파일에 존재, 실행시 사용불가, 기본값 -> 클래스파일이 JVM에 로딩뙬 떄는 애너테이션의 정보가 무시되어 실행 시에 애너테이션에 대한 정보를 얻을 수 없다. |
RUNTIME | 클래스 파일에 존재, 실행시 사용가능 -> 리플렉션 (reflection)을 통해 클래스 파일에 저장된 애너테이션의 정보를 읽어서 처리할 수있다. + 지역변수에 붙은 애너테이션은 컴파일러만 인식할 수 있으므로 , RUNTIME 인 애너테이션을 지역변수이 붙여도 실행시 인식되지 않는다. + JVM이 자바 바이트코드가 담긴 class 파일에서 런타임환경을 구성하고 런타임을 종료할 때까지 메모리는 살아있습니다. |
728x90
'자바 > 자바 기본' 카테고리의 다른 글
Enum(Enumeration) (0) | 2023.04.18 |
---|---|
자바 - 람다식 (Lambda expression) 기초 (0) | 2023.03.03 |
인터페이스 추상화 클래스의 차이점/공통점 (0) | 2022.10.19 |
인터페이스 / interface (0) | 2022.10.19 |
추상클래스 / abstract class / abstract method (0) | 2022.10.17 |
Comments