반응형
해당 강의를 듣고 정리한 것입니다
https://programmers.co.kr/learn/courses/9
자바 중급
평가 5.0 17개의 평가 ★★★★★17 ★★★★0 ★★★0 ★★0 ★0 ds02168 2021.08.20 15:37 Yeonggwang 2021.06.28 01:48 강신우 2021.04.23 10:20 HyeonWoo Jeong 2021.04.08 17:12 이용준 2021.01.26 19:23 리뷰 더보기
programmers.co.kr
어노테이션
: java5에 추가 괸 기능
- 클래스나 메서드 위에 붙음. @(at) 기호로 이름이 시작 ex)@Override
- 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통해 클래스가 좀 더 다르게 실행되게 할 수 있음. 이런 이유로 어노테이션을 설정 파일처럼 설명하는 경우도 있음!!
- 어노테이션은 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수 도 있음.
- 사용자가 직접 작성하는 어노테이션을 Custom어노테이션이라고 말함. - 커스텀 어노테이션을 이용하는 방법
1. 어노테이션을 정의
2. 어노테이션을 클래스에서 사용(타겟에 적용)
3. 어노테이션을 이용해 실행 - 패키지 익스플로러에서 [new-Annotaion]을 이용하여 Count100이라는 어노테이션 생성
- Count100 어노테이션을 JVM실행 시에 감지할 수 있도록 하려면 @Retention(RetentionPolicy.RUNTIME)을 붙이기!
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Count100 {
}
- "hello"를 출력하는 hello() 메서드를 가지는 MyHello라는 클래스를 작성
- hello메서드 위에 @Count100어노테이션을 붙임
public class MyHello {
@Count100
public void hello() {
System.out.println("hello");
}
}
- MyHello클래스를 이용하는 MyHelloExam클래스를 작성
- MyHello의 hello메서드가 @Count100어노테이션이 설정되어 있을 경우, hello()메서드를 100번 호출하도록 함.
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)) {
//어노테이션이 적용되어있으면 hello()메서드 100번 사용
for(int i=0; i<100; i++) {
hello.hello();
}
}else {
hello.hello();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- java.lang.reflect.Method 클래스를 이용해 hello메서드 객체 생성
- method.isAnnotationPresent(Count100.Class) : 해당 메서드에 Count100이라는 어노테이션이 존재하는가?
반응형
'Language > Java' 카테고리의 다른 글
자바 중급16 : 스레드(쓰레드, Thread) 2 - 상태제어(Join, wait, notify), 데몬스레드 (0) | 2022.01.19 |
---|---|
자바 중급15 - 스레드(쓰레드, Thread) 1 : 생성, 공유객체, 동기화블록(Snchronized) (0) | 2022.01.19 |
자바 중급13 - 자바IO (0) | 2022.01.18 |
자바 중급12 - time패키지 (0) | 2022.01.17 |
자바 중급11 - Date, Calendar클래스 (0) | 2022.01.17 |