@interface DateTime { // @interface 애너테이션이름
// 타입 요소이름(); 애너테이션의 요소를 선언
String yymmdd(); // 날짜
String yymmdd(); // 시간
}
애너테이션 정의
@interface TestInfo {
int count();
String testedBy();
String[] testTools();
TestType testType(); // enum TestType { FIRST, FINAL }
DateTime testDate(); // 자신이 아닌 다른 애너테이션(@DateTime) 포함 가능
}
애너테이션 사용
@TestInfo(
count=3, testedBy="Kim",
testTools={"JUnit", "AutoTester"},
testType = TestType.FIRST,
testDate=@DateTime(yymmdd="210101", hhmmss="235959")
)
public class NewClass { ... }
@interface TestInfo{
int count() default 1; // 기본값 지정
}
@TestInfo // @TestInfo(count=1)과 동일. default값이 없으면 (count=1) 필수
public class NewClass { ... }
@interface TestInfo{
String value();
}
@TestInfo("passed") // @TestInfo(value="passed")와 동일
class NewClass { ... }
@Interface TestInfo {
String[] testTools();
}
@Test(testTools={"JUnit", "AutoTester"})
@Test(testTools="JUnit")
@Test(testTools={}) // 값이 없을 때는 괄호{}가 반드시 필요
@Test // 마커 애너테이션. 이 메서드가 테스트 대상임을 테스트 프로그램에게 알린다.
public void method() {
...
}
@interface AnnoTest {
int id = 100; // OK
String major(int i, int j); // Error!! 매개변수 X
String minor() throws Exception; // Error!! 예외 X
ArrayList<T> list(); // Error!! 타입 매개변수 X
}