반응형
- 에노테이션은 주석이라는 의미를 가진다.
- 자바 소스 코드에 사이에 @ 기호를 앞에 붙여서 사용하는데, JDK 1.5 버전 이상에서 사용 가능하다.
Annotation 용도
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
- 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- 실행시(런타임시)특정 기능을 실행하도록 정보를 제공
내장 Annotation
7개의 표준 어노테이션 중에 3개가 java.lang의 일부이며, 나머지 4개는 java.lang.annotation으로부터 가져온다.
java code에 적용되는 Annotation
Annotation | Description |
@Override |
|
@Deprecated |
|
@SuppressWarnings |
|
@SafeVarargs |
|
@FunctionalInterface |
|
기타 annotation에 적용되는 annotation (meta annotation)
Annotation | Description |
@Retention |
|
@Documented |
|
@Target |
|
@Inherited |
|
@Repeatable |
|
Custom Annotation
커스텀 어노테이션을 이용하는 방법
1) 어노테이션을 정의한다.
2) 어노테이션을 클래스에서 사용한다. (타겟에 적용)
3) 어노테이션을 이용하는 코드를 수행한다.
annotation 생성
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME) // 런타임중에도 유효한 어노테이션임을 기술
public @interface Count100 { // 어노테이션은 @interface 인터페이스명으로 정의
}
custom annotation을 method에 적용
public class MyHello {
@Count100
public void hello(){
System.out.println("hello");
}
}
annotation이 적용된 부분인지 체크하여 코드 내에서 사용
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)){
for(int i = 0; i < 100; i++){
hello.hello();
}
}else{
hello.hello();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
우아한 형제들에서 사용하는 커스텀 어노테이션 예제
반응형
'IT > Programming Language' 카테고리의 다른 글
[C++/STL] STL 사용법 : Container - Vector (0) | 2025.02.15 |
---|---|
[C++/STL] STL 사용법 : Container - Array (0) | 2025.02.15 |
[Java] 데이터 타입, 자료형 (Data Type) (0) | 2025.02.09 |
[Java] 상속 (Inheritance) 과 인터페이스 (Interface) (0) | 2025.02.09 |
[Java] 추상클래스와 인터페이스 (0) | 2025.02.09 |