annotation, 간단하게 @표시를 의미한다.
Java 5부터 새롭게 추가된 기능으로, 클래스 및 메소드에 @표시를 첨가하여 소스코드에 메타코드(세부적인 정보)를 기재하는 도구를 뜻한다.
클래스 컴파일 및 실행 간 어노테이션에서 설정한 값을 참조하여, 클래스가 특정적으로 동작할 수 있도록 설정할 수 있다.
※ Java에서 제공하는 어노테이션도 있지만, 사용자가 직접 정의하고 사용할 수 있는 커스텀 어노테이션도 존재한다.
어노테이션은 하나의 java 파일이다.
new > annotation으로 annotation 전용 파일을 만들어주면 되는데, 아래와 같이 interface 키워드에 @표시가 붙여진 형태의 클래스가 선언된다.
아래와 같은 anntation을 정의하였다고 가정해보자.
public @interface annotation{
System.out.println("This is annotation");
}
이 사용자 지정 annotation을, 특정 class가 실행될 때 본 anntation을 감지하고 실행할 수 있도록 아래와 같이 참조구문을 작성해주어야 한다.
public class annoTest{
@annotation
public void printHello(){
//본 class는 실행될때마다 위 annotation을 참조하면서 실행된다.
System.out.println("This is method referred by annotation");
}
}
이 후 main class에서 method와 annotation을 참조하는 구문을 작성하면, 실행시 annotation을 참조할 수 있도록 구성할 수 있다.
※ 예외처리를 필수적으로 진행한다.
public annoTester{
public void main(String[] args){
annoTest at = new annoTest();
//method와 annotation을 연결하기위해 method 정보를 불러온다.
//아래 구문 실행시 at 객체에서 printHello 메소드가 정의됨
try{
Method method = at.getClass().getDeclaredMethod("printHello");
if(method.isAnnotationPresent(annotation.class)){
//annotation이 위에서 정의한 메소드에 related하는지 확인
at.printHello();
}
}catch(Exception e){
e.printStackTrace();
}
}
}