본문 바로가기
자바(Java)

자바 중급14 - 어노테이션(Annotation)

by codeyaki 2022. 1. 19.
반응형

해당 강의를 듣고 정리한 것입니다

https://programmers.co.kr/learn/courses/9

 

자바 중급

평가 5.0 17개의 평가 ★★★★★17 ★★★★0 ★★★0 ★★0 ★0 ds02168 2021.08.20 15:37 Yeonggwang 2021.06.28 01:48 강신우 2021.04.23 10:20 HyeonWoo Jeong 2021.04.08 17:12 이용준 2021.01.26 19:23 리뷰 더보기

programmers.co.kr


어노테이션

: java5에 추가 괸 기능

  • 클래스나 메서드 위에 붙음. @(at) 기호로 이름이 시작 ex)@Override
  • 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통해 클래스가 좀 더 다르게 실행되게 할 수 있음. 이런 이유로 어노테이션을 설정 파일처럼 설명하는 경우도 있음!!
  • 어노테이션은 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수 도 있음.
    - 사용자가 직접 작성하는 어노테이션을 Custom어노테이션이라고 말함.
  • 커스텀 어노테이션을 이용하는 방법
    1. 어노테이션을 정의
    2. 어노테이션을 클래스에서 사용(타겟에 적용)
    3. 어노테이션을 이용해 실행
  • 패키지 익스플로러에서 [new-Annotaion]을 이용하여 Count100이라는 어노테이션 생성
    - Count100 어노테이션을 JVM실행 시에 감지할 수 있도록 하려면 @Retention(RetentionPolicy.RUNTIME)을 붙이기!
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface Count100 {	
}
  • "hello"를 출력하는 hello() 메서드를 가지는 MyHello라는 클래스를 작성
    - hello메서드 위에 @Count100어노테이션을 붙임
public class MyHello {
	@Count100
	public void hello() {
		System.out.println("hello");
	}
}
  • MyHello클래스를 이용하는 MyHelloExam클래스를 작성
    - MyHello의 hello메서드가 @Count100어노테이션이 설정되어 있을 경우, hello()메서드를 100번 호출하도록 함.
import java.lang.reflect.Method;

public class MyHelloExam {
	public static void main(String[] args) {
		MyHello hello = new MyHello();
		try {
			Method method = hello.getClass().getDeclaredMethod("hello");
			//특정 메서드에 어노테이션이 적용되어 있는지 확인하는 방법
			if(method.isAnnotationPresent(Count100.class)) {
				
				//어노테이션이 적용되어있으면 hello()메서드 100번 사용
				for(int i=0; i<100; i++) {
					hello.hello();
				}
			}else {
				hello.hello();
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
  • java.lang.reflect.Method 클래스를 이용해 hello메서드 객체 생성
  • method.isAnnotationPresent(Count100.Class) : 해당 메서드에 Count100이라는 어노테이션이 존재하는가?
반응형