카테고리 없음
[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 ~~