효과 - 자바 연구는 패턴 (39)을 명명보다 더 노트 --- 노트

다음과 같은 세 가지 모드 :( 이전 버전 4의 명명 된 단점은,의 JUnit 테스트 프레임 워크) Beck04] 시험 시험 방법 지정된 이름을 시작하기 위해 사용자가 필요합니다

  1. 맞춤법 실수는 실패로 이어질하지만, 메시지가 표시되지 않습니다.

  2. 그들은 단지 적절한 프로그램 요소에 사용할 수 없습니다 있는지 확인하십시오.

  3. 그들은 프로그램 요소와 관련된 좋은 방법 매개 변수 값을 제공하지 않습니다.

Junit4의 예를 아래 주석의 장점을 설명하기 위해

/ ** 
* 주석 방법은 시험 방법임을 나타낸다. 
* 만 매개 변수가 정적 메서드에 사용합니다. 
* / 
@Retention (RetentionPolicy.RUNTIME) 
@Target (ElementType.METHOD) 
공개 @의 인터페이스 테스트 { 
}
// 프로그램은 마커 주석 처리하는 
가져 java.lang.reflect의를 *. ; 
공용 클래스 RunTests {  공공 정적 무효 메인 (문자열 [] 인수)이 발생 예외 {   INT의 테스트 = 0 ;   INT는 = 0 전달 ;   클래스 의 TestClass = Class.forName을 (인수 [0 <?> ]);   (: testClass.getDeclaredMethods () 메소드 m) {     경우 (. m.isAnnotationPresent (테스트 클래스 )) {       시험 ++ ;       시도 {         m.invoke ( 널 (null) );         통과 ++ ;       } 캐치 (wrappedExc있는 InvocationTargetException) {         의 Throwable EXC = wrappedExc.getCause ();         에서 System.out.println (m +는 "실패 :"+ EXC);       } 캐치 (예외 EXC) {         에서 System.out.println ( "잘못된 @Test :"+ m);       }     }   }   System.out.printf ( "통과 %의 D, 실패한 %의 D %의 n을" 통과, 테스트 - 통과);  }
}

자바 8 시작, 다중 값 사항을 수행 할 수있는 또 다른 방법이있다. @Repeatable 요소없이 주석 문 메모를 지정하기 위해 사용될 수있다
주석 선언 어레이 형 파라미터를 이용하여, 주석이 단일 요소를 표시하기 위해 반복적으로 적용 할 수있다.

 

// 반복 주석 형 
@Retention (RetentionPolicy.RUNTIME) 
@Target (ElementType.METHOD) @Repeatable (ExceptionTestContainer.
 클래스) 
공공의 @의 인터페이스 ExceptionTest { 
  클래스 <? 연장 예외> ) (값; 
} 
@Retention (RetentionPolicy.RUNTIME) @Target (ElementType.METHOD)
공개 @의 인터페이스 ExceptionTestContainer {   ExceptionTest []의 값 (); }

// 코드 반복 주석 포함
@ExceptionTest (IndexOutOfBoundsException.class를)
@ExceptionTest (NullPointerException.class)
공공 정적 무효 doublyBad () {...}

 

요약 :이 자리에 주석을 사용할 수있는 경우, 이름 패턴을 사용할 필요는 없다. 모든 프로그래머는 자바가 제공하는 미리 정의 된 주석 유형을 사용해야합니다.

 

추천

출처www.cnblogs.com/zsmcwp/p/11607030.html