"Java" 우리가 자주 사용하는 Java Annotation이 어떻게 구현되어 있는지 아시나요? Annotation은 태그와 동일합니다. Annotation과 Annotation의 차이점은 Annotation의 내용을 사용할 수 있다는 점입니다. 다음으로 Java Annotation에 대해 알아 보겠습니다.
주석을 사용하려면 아래와 같이 주석 자체, 주석 사용 클래스, 주석 처리 클래스의 세 부분으로 나눌 수 있습니다. 그림 설명
주석의 구조
이제 어떻게 주석을 사용하는지 살펴보겠습니다. 코드 작동
1단계: 새 주석 만들기
PlayerName 및 PlayerInfor라는 두 개의 새 주석 만들기
PlayerName:
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java .lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@ Documented
public @interface PlayerName {
String value() default "";
}
PlayerInfor:
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang .annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface PlayerInfor {
public enum Color{Blue,Red,White};
Color color() 기본값 Color.Blue;
int number() 기본값 7;
int age();
String club () 기본 "Manchester United";
}
2단계: 엔터티 클래스 정의 및 새로 생성된 주석 사용
새 FootballPlayer 클래스 만들기
FootballPlayer:
public 클래스 FootballPlayer {
//주석 달기 PlayerName 엔터티 클래스의 name 속성에 바인딩
@PlayerName("Rooney")
public String name;
//PlayerInfor 주석을 엔터티 클래스의 playInfo 속성에 바인딩
@PlayerInfor(color=Color. 빨간색,숫자=10,나이=30)
public String playInfo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlayInfo() {
return playInfo;
}
public void setPlayInfo(String playInfo) {
this.playInfo = playInfo;
}
}
3단계: 주석 정의 클래스 처리, 엔터티 클래스의 주석 처리
New AnnoUtil 도구 클래스
AnnoUtil:
import java.lang.reflect.Field;
public class AnnoUtil {
public static void getPlayerInfo(Class> clazz){
/엔티티 클래스의 모든 속성 가져오기/
Field[] fields = clazz.getFields();
//엔티티 클래스 속성에서 주석을 추출하는 루프
for(Field field:fields){
// 주석 일치
if(field.isAnnotationPresent(PlayerName.class)){
//주석 가져오기
PlayerName name = field.getAnnotation(PlayerName.class);
//주석 사용
System.out. println( "선수 이름: "+name.value());
}else if(field.isAnnotationPresent(PlayerInfor.class)){
//주석 가져오기
PlayerInfor infor = field.getAnnotation(PlayerInfor.class) ;
//주석 사용
System.out.println("팀: "+infor.club()+", 대표 색상: "
+infor.color()+", 번호: "+infor.number ()+", age: "+infor.age());
}
}
}
}
4단계: 처리 클래스의 처리 메서드 호출
public static void main(String[] args ) {
AnnoUtil.getPlayerInfo(FootballPlayer.class);
}
출력 결과는 다음과 같습니다.
선수 이름: Rooney
팀: 맨체스터 유나이티드, 대표 색상: 빨간색, 등번호: 10, 나이: 30
위 프로그램에서 엔터티 클래스와 Annotation의 관계는 기사와 노트와 같고, Annotation 처리 클래스는 사람이 노트와 함께 기사를 읽고, 이를 분석하고 처리하여 결과를 출력하는 것과 같다는 것을 알 수 있습니다. 그들은 표현하고 싶어합니다.
첨부 파일:
Java는 특히 다른 주석을 주석 처리하는 네 가지 메타 주석을 제공합니다.
@Retention 메타 주석은 주석 정보를 저장해야 하는 수준(라이프 사이클)을 나타냅니다. 선택적 RetentionPoicy 매개변수는 다음과 같습니다.
RetentionPolicy.SOURCE: Java 소스 파일에 유지되고 컴파일러는 삭제됩니다.
RetentionPolicy.CLASS: 클래스 파일에 유지되지만 VM에 의해 삭제됩니다(기본값)
RetentionPolicy.RUNTIME: 메모리 바이트코드에 있음 , VM은 런타임 시 주석도 유지하므로 반사 메커니즘
@Target 메타 주석을 통해 주석 정보를 읽을 수 있습니다. 기본값은 주석이 사용되는 위치를 나타내는 모든 요소입니다. 사용 가능한 ElementType 매개변수에는
ElementType.CONSTRUCTOR: 생성자 선언
ElementType.FIELD: 멤버 변수, 객체, 속성(enum 인스턴스 포함)
ElementType.LOCAL_VARIABLE: 지역 변수 선언
ElementType.METHOD: 메서드 선언
ElementType이 포함됩니다. PACKAGE: 패키지 선언
ElementType.PARAMETER: 매개변수 선언
ElementType.TYPE: 클래스, 인터페이스(주석 유형 포함) 또는 열거형 선언
@Documented는 JavaDoc의 주석을 포함합니다
@Inheried를 사용하면 하위 클래스가 상위 주석에서 상속받을 수 있습니다. 클래스 [1]: /img/bVbekSZ
2018년 최신 0 기반 입문 및 고급 튜토리얼 세트를 편집했습니다. Java 학습 qun: 678-241-563을 추가하여 얻을 수 있습니다. 개발 도구 및 설치 패키지, 시스템 학습 로드맵도 제공됩니다.
관련 기사:
관련 동영상:
위 내용은 Java에서 일반적으로 사용되는 주석을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!