Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
more
Archives
Today
Total
관리 메뉴

ordinary

[effective_java] item39 본문

카테고리 없음

[effective_java] item39

extra_ 2023. 2. 28. 19:22

item39 : 명명 패턴보다 애너테이션을 사용하라

---

명명패턴의 단점
1. 오타에 취약하다
2. 올바른 프로그램 요소에서만 사용된다.
3. 프로그램 요소를 매개변수로 전달할 방법이 없다.


~~코드 39-1~~

@Test를 선언한 @interface

- @Retention(RetentionPolicy.RUNTIME) :  @Test가 런타임시에도 유지되어야한다는 뜻
- @Target(ElementType.METHOD) : @Test가 반드시 메서드 선언에서만 사용되어야 한다는 뜻
이와 같이 애너테이션 선언에 다는 애너테이션을 메타애너테이션이라고 한다.


~~코드 39-2 ~~

@Test 애너테이션을 적용한 모습
매개변수 없이 걍 썼을때 마킹(marking)한다고 하고, 이를 marker annotation이라고 한다.

- static메서드를 사용하지 않은 m5는 잘못 사용된 것이다.

~~ 코드 39-3 ~~

- isAnnotationPresent()를 사용해 실행할 메서드를 찾는다.
- Class.forName() .getDeclaredMethods()를 Method로 받아 for문으로 돌린 invoke()를 호출한 것은 리플렉션 매커니즘을 사용한 것이다.
- InvocationTargetException 외의 예외는 @Test를 잘못 사용했을 떄 던져진다.

~~코드 39-4 ~~