학습 노트:제2 0 장(주해)
8966 단어 자바 프로 그래 밍 사상학습 노트Java
제2 0 장 주해
목차
1.기본 문법
1.1 정의 주해
1.2 원 주해
2.주석 처리 기 작성
2.1 주석 요소
2.2 기본 값 제한
2.3 외부 파일 생 성
2.4 주해 상속 불가
3.apt 로 주 해 를 처리 합 니 다.
4.관찰자 모드 를 apt 에 사용
5.주석 기반 유닛 테스트
머리말
4.567917.주석 Annotation 을 사용 하면 메타 데 이 터 를 프로그램 소스 코드 에 쓸 수 있 고 코드 를 간결 하 게 보일 수 있 으 며 컴 파일 러 도 주석 Annotation 의 유형 검 사 를 제공 하여 컴 파일 기간 에 문법 오 류 를 제거 할 수 있 습 니 다
4.567917.주 해 를 통 해 우 리 는 컴 파일 러 가 테스트 하고 검증 하 는 형식 으로 관련 프로그램의 추가 정 보 를 저장 할 수 있 습 니 다
4.567917.주 해 는 설명자 파일 을 만 들 고 심지어 새로운 종류의 정 의 를 만 들 수 있 으 며'모델'코드 를 작성 하 는 부담 을 줄 이 는 데 도움 이 된다
JDK 내 장 된 3 중 Annotation
JDK 5 에는 일반적인 목적 의 주석 3 개가 내장 되 어 있 습 니 다.이 세 개의 내 장 된 주석 은 자바.lang 패키지 에 있 습 니 다.
4.567917.@Override:이 주 해 는 계승 류 나 인 터 페 이 스 를 실현 하 는 하위 클래스 방법 에 자주 사용 된다.표면 에 이 방법 은 하위 클래스 가 부모 클래스 를 덮어 쓰 는 방법 이다.이 방법의 서명 은 덮어 쓰 는 방법의 원칙 에 따라 야 한다.즉,방문 제어 권한 은 부모 클래스 보다 더욱 엄격 해 야 하 며 부모 클래스 보다 더 많은 이상 을 던 져 서 는 안 된다
1.기본 문법
1.1 정의 주해
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test{}
1.2 원 주해
자바 에는 세 개의 표준 주해 만 내 장 됩 니 다(위 에서 말 한 바 와 같이).다음 네 개의 원 주해 와 함께:
@Target 주석
주 해 를 표시 하 는 대상 프로그램의 요소 종 류 를 표시 합 니 다.이 주 해 는 항상 Element Type 매 거 진 형식 과 함께 사용 합 니 다.Element Type 매 거 진 은 자바 프로그램 에서 설명 하 는 요소 종 류 를 다음 과 같이 제공 합 니 다.
패키지 성명
@Retention 주석
이 주 해 는 프로그램 성명 주기 에 정 의 된 주석 형식 을 표시 하 는 데 사 용 됩 니 다.이 주 해 는 항상 RetentionPolicy 와 공동으로 사 용 됩 니 다.RetentionPolicy 매 거 진 상수 가 코드 에 주석 을 달 고 있 는 보존 정책 을 정의 합 니 다.
@Documented
이 주 해 를 자바 doc 에 포함 합 니 다.
@Inherited
하위 클래스 가 부모 클래스 의 주 해 를 계승 하도록 허용 합 니 다.
2.주석 처리 기 작성
주 해 를 사용 할 때 중요 한 부분 은 주 해 를 만 들 고 사용 하 는 것 입 니 다.자바 는 주 해 를 가 진 자바 소스 패 키 지 를 분석 하 는 외부 도구 apt 를 제공 합 니 다.
주 해 를 정상적으로 사용 할 때 주해 에서 요 소 를 정의 해 야 합 니 다.프로그램 설정 의 값 을 받 을 때 주 해 를 정상적으로 정의 하 는 예 는 다음 과 같 습 니 다.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase{
public int id();
public String description() default “no description”; //
}
주석 Annotation 을 정상적으로 정의 하 는 방식 은 정의 인터페이스 와 유사 합 니 다.id 와 description 은 주석 UseCase 의 속성 이지 방법 이 아 닙 니 다.주석 에서 방법 을 정의 할 수 없고 속성 만 정의 할 수 있 습 니 다.그 중에서 description 속성 은 기본 값 인'no description'이 있 습 니 다.즉,사용 할 때 description 의 값 이 지정 되 지 않 으 면 프로그램 은 기본 값 을 사용 합 니 다.
위의 UseCase 주 해 는 추적 방법 에 사용 되 는 테스트 사례 설명 입 니 다.위의 주 해 를 사용 한 예 는 다음 과 같 습 니 다.
public class PasswordUtils{
@UseCase(id = 47, description = “Passwords must contain at least one numeric”)
public Boolean validatePassword(String password){
return (password.mathes(“\\w*\\d\\w*”));
}
@UseCase(id = 48)
public String encryptPassword(Srring password){
return new StringBuilder(password).reverse().toString();
}
@UseCase(id = 49, description = “New passwords can’t equal previously used ones”)
public Boolean checkForNewPassword(List prevPasswords, String password){
return !prevPasswords.contains(password);
}
}
JDK 5 에 서 는 Annotation 관련 API 를 제공 합 니 다.자바 의 반사 체 제 를 사용 하면 사용자 정의 Annotation 주석 처리 기(JDK 에서 도 APT,Annotationprocess tool 방식 으로 주석 을 처리 하고 나중에 설명 합 니 다)를 제공 합 니 다.상기 Annotation 을 처리 하 는 예 는 다음 과 같 습 니 다.
public class UseCaseTracker{
public static void traceUseCases(List useCases, Class> clazz){
//지정 한 클래스 의 모든 성명 을 가 져 오 는 방법
for(Method m : clazz.getDeclaredMethods()){
//가 져 오 는 방법 에 지 정 된 형식의 주석
public class UseCaseTracker{
public static void traceUseCases(List useCases, Class> clazz){
//
for(Method m : clazz.getDeclaredMethods()){
//
UseCase uc = m.getAnnotation(UseCase.class);
if(uc != null){
System.out.println(“Found Use Case:” + uc.id() + “ ” + uc.description());
useCases.remove(new Integer(uc.id()));
}
}
for(int i : useCases){
System.out.println(“Warning: Missing use case-” + i);
}
}
public static void main(String[] args){
List useCases = new ArrayLis();
Collections.addAll(useCases, 47, 48, 49, 50);
trackUseCases(useCases, PasswordUtils.class);
}
}
이 프로그램 은 getDeclared Methods()와 m.getAnnotation(UseCase.class)두 가지 반사 방법 을 사 용 했 습 니 다.
2.1 주석 요소
Annotation 주석 에 있 는 요 소 는 아래 의 데이터 형식 만 사용 할 수 있 습 니 다.
4.567917.위 유형의 배열위의 이러한 유형 을 제외 하고 주석 에서 다른 유형의 데 이 터 를 정의 하면 컴 파일 러 가 잘못 보고 할 것 입 니 다.
2.2 기본 값 제한
메모:주석 에 있 는 요 소 는 기본 값 을 지정 하거나 사용 하 는 클래스 에서 할당 합 니 다.기본 값 이 없 으 면 사용 클래스 에 할당 되 지 않 으 면 주석 요 소 는 일반 구성원 변수 처럼 기본 값 을 지정 하지 않 습 니 다.즉,지정 한 기본 값 을 할당 하거나 표시 해 야 합 니 다.기본 값 예 는 다음 과 같 습 니 다.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DefaultValue{
public int id() default -1;
public String description() default “”;
}
2.3 외부 파일 생 성
Enterprise JavaBean 과 같은 기술 은 모든 Bean 이 대량의 인터페이스 와 배 치 를 통 해 파일 을 설명 해 야 하 는데 이것 은 모두 모델 파일 에 속한다.그러나 주 해 를 사용 하면 모든 정 보 를 자바 빈 의 원본 파일 에 저장 할 수 있 습 니 다.이 를 위해 서 는 빈 과 연 결 된 데이터베이스 시트 의 이름과 빈 속성 관리 열 이름과 SQL 형식 을 정의 하 는 새로운 주석 이 필요 합 니 다.
@Target(ElementType.TYPE)//
@Retention(RetentionPolicy.RUNTIME)
public @interface DBTable{//
public String name() default “”;
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Constraints{//
boolean primaryKey() default false;
boolean allowNull() default true;
boolean unique() default false;
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLString{//String
int value() default 0;
String name() default “”;
Constraints constraints() default @Constraints;//
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLInteger{//int
String name() default “”;
Constraints constraints() default @Constraints;
}
2.4 주해 상속 불가
키워드 extends 를 사용 하여@interface 를 계승 할 수 없습니다.
3.apt 로 주 해 를 처리 합 니 다.
4.관찰자 모드 를 apt 에 사용
5.주석 기반 유닛 테스트
4.567917.단원 테스트:유형 중의 모든 방법 에 대해 하나 또는 여러 개의 테스트 를 제공 하 는 실천 으로 한 가지 방법 이 정확 한 행 위 를 가지 고 있 는 지 규칙 적 으로 테스트 하기 위해 서 이다
4.567917.유닛 테스트 도구:자바 에서 가장 유명한 유닛 테스트 도구 JUnit
5.1@Unit 을 범용 으로 사용
5.2"세트"필요 없 음
5.3 실현@Unit
5.4 테스트 코드 제거
@Test 주 해 를 추가 하고 자바 ssist 도구 라 이브 러 리 를 사용 하여 바이트 코드 프로젝트 를 모든@Test 주 해 를 삭제 합 니 다.(?)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JSON 입문 강좌 기초편 json 입문 학습 노트JSON: JavaScript Object Notation(JavaScript 객체 표현) JSON 인스턴스 JSON은 언어에 독립적: JSON은 Javascript 문법을 사용하여 데이터 대상을 설명하지만 JSON...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.