[Java] 어노테이션(Annotation) 정의와 커스텀 어노테이션(Custom Annotation) 사용방법

Hee·2024년 4월 24일

Java 복습

목록 보기
44/46
post-thumbnail

어노테이션(Annotation)

: 자바 프로그래밍 언어의 기능 중 하나로, 코드에 메타데이터(추가정보)를 추가하는 방법을 제공한다. 이 메타데이터는 컴파일러, 런타임 라이브러리 또는 다른 도구들에게 프로그램에 대한 추가적인 정보를 제공한다.


어노테이션 특징

  • 어노테이션은 클래스나 메소드 위에 붙는다. @(at) 기호를 사용하여 표시된다.
  • 어노테이션의 유무나 어노테이션에 설정된 값을 통해 클래스가 좀 더 다르게 실행되게 할 수 있다.
  • 어노테이션은 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수도 있다.
    • 사용자가 직접 작성하는 어노테이션을 Custom 어노테이션이라고 말한다.

Custom 어노테이션을 이용하는 방법

  1. 어노테이션 정의
  2. 어노테이션을 클래스에서 사용
  3. 어노테이션을 이용하여 실행


Custom 어노테이션 정의, 사용, 실행해보기

1. 어노테이션 정의
어노테이션을 정의할 때는 '@interface' 키워드를 사용하여 어노테이션을 선언한다. 어노테이션은 기본적으로 인터페이스의 형태를 가지며, 필요한 요소들을 메소드로 선언할 수 있다.

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)		// 어노테이션이 런타임에 유지될 수 있도록 함.
public @interface Count100{

}

2. 어노테이션을 클래스에서 사용
어노테이션을 사용하여 메소드에 메타데이터를 추가할 수 있다.

public class MyHello{
	@count100
    public void hello{
    	System.out.println("hello");
    }
}

3. 어노테이션을 이용하여 실행
어노테이션을 분석하려면 리플렉션을 사용해야 한다.
MyHello의 hello 메소드가 @count100 어노테이션이 설정되어 있을 경우, hello()메소드를 100번 호출하도록 한다.

import java.lang.reflect.Method;

public class MyHelloExam{
	public static void main(String[] args){
    	// MyHello 클래스의 인스턴스를 생성한다.
    	MyHello hello = new MyHello();
        
        try{
        	// Myclass 클래스에서 'hello'라는 이름의 메소드를 가져온다.
        	Method method = hello.getClass().getDeclaredMethod("Hello");
            
            // 가져온 메소드에 @count100 어노테이션이 있는지 확인한다.
            if(method.isAnnotationPresent(Count100.class)){
            	for(int i=0; i<100; i++){
                	hello.hello();
                }
            }else{
            	hello.hello();
            }
        }catch(Exception e){
        	e.printStackTrace();
        }
    }
}

0개의 댓글