어노테이션 (Annotation)
- 클래스, 메서드, 변수 등에 추가적인 데이터(Meta Data)를 붙이는 방식
- XML 설정 부분을 대체..
-> @WebServlet(...)
...
...
...
...
- 동적으로 클래스나 메서드에 필요한 메타 정보를 설정하고 이용한다. (리플렉션)
- 어노테이션을 활용하는 대표적인 기술 / 프레임워크
Spring(스프링)
Struts2
myBatis
- 생성 규칙...
1. interface 키워드와 함께 @로 시작하고 이름을 명시
@interface Override {
String value();
}
2. 메서드에 파라미터를 선언할 수 없다.
3. 메서드에 throws를 선언할 수 없다.
- Built - In Annotation
: 사용자가 직접 어노테이션을 작성(정의)할때 활용되는 어노테이션(메타 어노테이션)
1. @Target
: 사용자가 정의하는 어노테이션이 어느위치에 적용 할 수 있는지
: FIELD - 멤버변수에 사용
: METHOD - 메서드
: TYPE - 클래스, 인터페이스 선언에 사용
: PARAMETER - 메서드의 파라미터(매개변수) 자리
: CONSTRUCTOR - 생성자에 사용
: LOCAL_VARIABLE - 메서드 내의 변수
2. @Retention
: 작성되는 어노테이션의 언제까지 사용되는지 설정
: SOURCE - 소스상에서만 (코드 작성/편집시, ex>Override..)
: CLASS - .class 파일에 정보 유지
: RUNTIME - 실행될때 (실제 개발에 주로 사용됨..)
@Target(ElementType.FIELD) -> MyAnno는 변수에만 사용할 수 있게 됨
@Retention(RetentionPolicy.CLASS) -> .class파일을 만들때까지만 사용, 실행할때는 참조가 되지 않음
@interface MyAnno {
String value();
}
- 3가지 Annotation의 타입
1. Marker (메서드의 선언만 되어 있는것)(ex. Override)
public @interface MyAnno {}
2. Single-Value (안쪽에 정의된 메서드가 하나)
public @interface MyAnno {
String value();
}
@SuppressWarnings -> target({..,..,..,..,..}) 모든 위치에서 사용 가능,,
3. Full-Value or Multi-Value (하나 이상의 메서드가 선언)
public @interface MyAnno {
String value();
String call();
}
어노테이션 예시
//@MyAnno
//@Override -> @Target(ElementType.TYPE)
public class Test01 {
// @Override // 메서드가 아닌 일반 변수에 사용시 오류 발생 (사용 위치 에러), @Target(ElementType.FIELD)
int test;
@Override // @Target(ElementType.METHOD)
public String toString() { return "a"; }
// @Override // @Target(ElementType.PARAMETER)
public void call(/* @MyAnno */ int a) {
}
// @MyAnno, @Target(ElementType.CONSTRUCTOR)
Test01() {}
public static void main(String[] args) {
}
}
Java - 어노테이션 (Annotation) 멀티밸류 활용 (0) | 2018.10.16 |
---|---|
Java - 어노테이션 (Annotation) 활용 (0) | 2018.10.15 |
Java - Properties (JAVA) (0) | 2018.10.12 |
Java - 리플렉션을 이용한 객체 생성 (0) | 2018.10.12 |
Java - 리플렉션, 클래스의 메서드 정보 확인 (0) | 2018.10.12 |
댓글 영역