반응형
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 | 31 |
Tags
- 처우협의
- 성적평가
- 이분탐색
- BOJ
- softeer
- 기술면접
- 13908
- 물채우기
- 매개변수탐색
- 연결요소
- Docker
- 6987
- incr
- 소프티어
- dfs
- BFS
- @P0
- Kafka
- 백준
- compose
- 처우산정
- msSQL
- 퇴사통보
- upper_bound
- boj #19237 #어른 상어
- 파라메트릭
- 오퍼레터
- 경력
- OFFSET
- 백트래킹
Archives
- Today
- Total
기술 블로그
어노테이션(Annotation) 본문
728x90
반응형
● 어노테이션
• 프로그램에게 추가적인 정보를 제공해주는 메타데이터이다.
• Java 5부터 추가된 기능
• 클래스나 메소드 위에 붙여 사용 ex) @Override
• 소스코드에 메타코드(추가정보)를 주는 것
• 사용자가 직접 정의해서 사용 가능(커스텀 어노테이션)
● 어노테이션 용도
• 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
ex) 메소드가 재정의 되어있는지 확인할 수 있다.(@Override)
• 소프트웨어 개발 툴이나 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
ex) XML 설정 파일을 자동 생성하거나 배포를 위한 Jar 압축 파일을 자동 생성할 수 있다.
• 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공
ex) 객체가 애플리케이션 내부에서 해야할 역할을 정의할 수 있다.(서블릿, 컨트롤러, …)
Count100.java(Annotation)
1 2 3 4 5 6 7 | import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) // 입력 필수 public @interface Count100 { } | cs |
MyHello.java(Class)
1 2 3 4 5 6 7 | public class MyHello { @Count100 public void hello() { System.out.println("hello"); } } | cs |
MyHelloExam.java(Class)
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 | import java.lang.reflect.Method; public class MyHelloExam { public static void main(String[] args) { MyHello hello = new MyHello(); /* getClass() : 해당 인스턴스를 만들 때, 사용한 Class의 정보를 return * getDeclaredMethod() : getClass()로부터 얻은 Class의 정보로부터 hello라는 이름의 메소드에 대한 정보를 구해라. */ try { 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) { // TODO Auto-generated catch block e.printStackTrace(); } } } | cs |
728x90
반응형
'JAVA' 카테고리의 다른 글
직렬화(Serialization)와 역직렬화(Deserialization), transient 변수 (0) | 2023.09.07 |
---|---|
자바 가상 기계, JVM(Java Virtual Machine) (0) | 2020.01.29 |
우선순위 큐(PriorityQueue) compareTo (0) | 2020.01.19 |
Java vector sort (0) | 2020.01.08 |