Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 10px
- 문서번호
- entity
- 서버리스 #
- 으
- 0.5px border
- Props
- 1px border
- jwt
- TS
- es6
- 0.75px border
- 전역변수
- 클론코딩
- 당근마켓
- angular
- 타입스크립트
- npm
- 데이터베이스 #try #이중
- github
- ZOOM
- font-size
- 0.25px border
- ES5
- &연산
- Strict
- TypeScript
- Websocket
- 컴포넌튼
- literal
Archives
- Today
- Total
복잡한뇌구조마냥
[JAVA] 어노테이션 (Annotation) 본문
어노테이션
- Java 5부터 추가된 기능
- 클래스나 메소드 위에 붙여 사용 ex) @Override
- @(at) 기호로 이름이 시작됨.
- 소스코드에 메타코드(추가정보)를 주는 것
- 사용자 정의 가능 → 커스텀 어노테이션
커스텀 어노테이션
1. 정의
// Count100.java
package Util.exam;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
// 실행시에 감지할 수 있는 어노테이션
@Retention(RetentionPolicy.RUNTIME)
public @interface Count100 {
}
2. 사용
package Util.exam;
public class MyHello {
@Count100
public void hello(int num) {
System.out.println("Hello World" + num);
}
}
3. 실행
package Util.exam;
import java.lang.reflect.Method;
public class MyHelloExam {
public static void main(String[] args) {
MyHello myHello = new MyHello();
try {
Method method = myHello.getClass().getDeclaredMethod("hello");
if (method.isAnnotationPresent(Count100.class)) {
for (int i = 0; i < 100; i++) {
myHello.hello();
}
} else {
myHello.hello();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- JVM 실행시 감지할 수 있도록 하려면 @Retention(RetentionPolicy.RUNTIME)를 붙여줘야함
- 어노테이션을 작성한 메소드를 생성
- 클래스가 가지고 있는 메소드를 확인하여 특정 어노테이션이 있는지에 따라 다른 기능을 제공 할 수 있음.
LIST
'BE > JAVA' 카테고리의 다른 글
[JAVA] 람다 ( 람다식 ) (0) | 2025.06.18 |
---|---|
[JAVA] 쓰레드 ( Thread ) (2) | 2025.06.18 |
[JAVA] 자바 IO ( Byte 단위, 다양한 타입, Char 단위 입출력) (0) | 2025.06.14 |
[JAVA] 날짜와 시간 ( Date, Calendar, java.time ) (2) | 2025.06.14 |
[JAVA] 컬렉션 프레임워크 ( 자료구조, Set, List, Map ) (1) | 2025.06.10 |