럿고의 개발 노트

[프로그래머스] 자바 중급 > Part6. 어노테이션 본문

Java Note/[프로그래머스] 자바 중급(동영상 강의)

[프로그래머스] 자바 중급 > Part6. 어노테이션

KimSeYun 2020. 2. 4. 11:09

[프로그래머스] 자바 중급

Part6. 어노테이션

1. 어노테이션

  • Java5에 추가된 기능

  • 클래스나 메소드위에 붙으며 @(at)기호를 사용

  • 어노테이션을 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통하여 클래스가 좀 더 다르게 실행되게 할 수 있음.

  • 이런 이유로 어노테이션을 일정의 설정파일처럼 설명하는 경우도 있음.

  • 어노테이션은 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수도 있음.

  • 사용자가 직접 작성하는 어노테이션을 Custom 어노테이션이라고 말함.

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

    1. 어노테이션 정의
    2. 어노테이션을 클래스에 사용(타켓에 적용)
    3. 어노테이션을 이용하여 실행
  • JVM실행시 감지할 수 있도록 하려면 @Retention(RetentionPolicy.RUNTIME)을 붙어줘야 함.

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

@Retention(RetentionPolicy.RUNTIME) // 실행중에 JVM에 감지할수 있게 해주는 것
public @interface Count100 {

}
public class MyHello {
    /*
     * 어노테이션(Annotation) Java5부터 추가된 기능 클래스나 메소드 위에 붙여 사용 ex)@Override 소스코드에
     * 메타코드(추가정보)를 주는 것 일정의 설정파일처럼 설명하는 경우도 있음 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들어서
     * 사용할수 있는 것도 있음 Custom 어노테이션 이용 방법 1. 정의 2. 사용 3. 실행
     */    
    @Count100
    public void hello() {
        System.out.println("hello");
    }
}
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");
            // getClass메소드 : 해당 인스턴스를 만들때 해당 메소드에 대한 정보를 얻음,
            // getDeclaredMethod : 지정한 메소드에 대한 정보를 얻음

            if(method.isAnnotationPresent(Count100.class)) { // 특정 어노테이션이 메소드에 적용되어 있는지 알아볼수 있는 것
                for (int i = 0; i < 100; i++) {
                    hello.hello();
                }
            }else {
                hello.hello();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

출처

[프로그래머스] 자바 중급

Comments