티스토리 뷰
반응형
어노테이션이란?
메타데이터와 같이 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다.
어노테이션의 용도는 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
실행 시 특정 기능을 실행하도록 정보를 제공하는 용도로 쓴다.
public class asvsaf {
public static void main(String[] args) {
/*
* 어노테이션 정보 사용
* getFields() : 필드 정보를 배열로 리턴
* getConstructors() : 생성자 정보를 배열로 리턴
* getDeclaredMethods() : 메소드 정보를 배열로 리턴
*/
Method[] sMethods = Aa.class.getDeclaredMethods();
for(Method ssmethod : sMethods){
/*
* isAnnotationPresent(AnnotationClass)
* 어노테이션 적용되었는지 여부 상위 클래스에 적용된 경우에도 true를 리턴
* getAnnotation(AnnotationClass)
* 어노테이션 적용되어 있으면 어노테이션 리턴 그렇지 않으면 null을 리턴
* getAnnotations()
* 적용된 모든 어노테이션을 리턴 적용된 어노테이션이 없을경우 0인 배열을 리턴
* getDeclaredAnnotations()
* 직접 적용된 모든 어노테이션을 리턴 상위 클래스에 적용된 어노테이션은 포함하지 않음
*/
if(ssmethod.isAnnotationPresent(AnnotationName.class)){
AnnotationName sAnnotationName = ssmethod.getAnnotation(AnnotationName.class);
System.out.println(ssmethod.getName());
System.out.println(sAnnotationName.str());
}
}
}
/*
* 어노테이션 적용대상
* 적용 방법 : @Target({ElementType.적용대상})
* ElementType : 적용대상
* TYPE : 클래스, 인터페이스, 열거 타입,
* ANNOTATION_TYPE : 어노테이션
* FIELD : 필드
* CONSTRUCTOR : 생성자
* METHOD : 메소드
* LOCAL_VARIABLE : 로컬변수
* PACKAGE : 패키지
*/
@Target({ElementType.METHOD})
/*
* 어노테이션 유지 범위
* 적용방법 : @Retention(RetentionPolicy.SOURCE)
* SOURCE :
* 소스상에서만 어노테이션 정보를 유지 소스 코드를 분석할 때만 의미가 있으며,
* 바이트코드 파일에는 정보가 남지 않는다.
* CLSS :
* 바이트 코드 파일까지 정보를 유지 리플렉션을 이용해서 어노테이션 정보를 얻을 수 없다.
* RUNTIME :
* 바이트 코드 파일까지 정보를 유지 리플렉션을 이용해서 런타임 시에 어노테이션 정보를 얻을 수 있다.
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationName {
String str() default "안녕하세요.";
}
public class Aa{
@AnnotationName
public void method1(){
System.out.println("메소드1 실행");
}
@AnnotationName(str="잘가세요.")
public void method2(){
System.out.println("메소드2 실행");
}
}
}
실행결과
method1
안녕하세요.
method2
잘가세요.
반응형
'JAVA' 카테고리의 다른 글
(JAVA) 자바 추상클래스 Abstract (0) | 2017.02.09 |
---|---|
(JAVA) 자바 클래스 상속(extends) (0) | 2017.02.07 |
(JAVA) 자바 Getter, Setter 메소드 간단히 알아보기 (0) | 2016.12.21 |
(JAVA) 자바 접근 제한자 간단히 알아보기 Access Modifier (0) | 2016.12.21 |
(JAVA) 자바 final 간단히 알아보기~ (0) | 2016.12.16 |
댓글
최근에 올라온 글
최근에 달린 댓글