자바 주해 지식 포 인 트 를 상세히 해석 하 다.

4896 단어 Java주해
뭐 공부 해요?
자바 주 해 는 자바 코드 에 메타 데 이 터 를 제공 하 는 데 사 용 됩 니 다.이 말 을 보고 나 면 아직도 어리둥절 할 수도 있 습 니 다.사람의 말 로 는 주석 이 코드 실행 에 직접적인 영향 을 주지 않 고 정보 만 제공 하 는 것 입 니 다.이어서 저 는 주해 의 정의,원 주해,주해 속성,사용자 정의 주해,주해 해석 JDK 가 제공 하 는 주해 등 몇 가지 측면 에서 주해(Annotation)를 다시 알 아 보 겠 습 니 다.
2.jdk 가 지원 하 는 주 해 는 어떤 것 이 있 습 니까?
2.1 세 가지 자주 사용 하 는 주해:
@Suppress Warnings 이 주 해 는 컴 파일 러 가 경고 메 시 지 를 보 내 는 것 을 막 는 역할 을 합 니 다.다음 인자 가 있 을 수 있 습 니 다.

deprecation :         。    
unchecked:            。    
allthrough: Switch               Break    。    
path:    、                  。        
serial:           serialVersionUID      。     
finally:  finally          。       
all:           
@Deprecated       이 주해 의 역할 은 유행 이 지난 클래스 나 방법 을 표시 하 는 것 이다.
@Override 이 주 해 는 방법 앞 에 사용 되 며,이 방법 은 부모 클래스 를 다시 쓰 는 방법 임 을 표시 합 니 다.
2.2 원 주해
원 주 해 는 주로 사용자 정의 주 해 를 주석 하 는 데 사용 되 는데 각각@Retention,@Target,@Document,@Inherited 와@Repeatable(JDK 1.8 가입)다섯 가지 가 있 습 니 다.
다음은 평소에 가장 자주 사용 하 는 두 가지 주 해 를 말씀 드 리 겠 습 니 다.
@Retention 주해 의 생명주기,주로

RetentionPolicy.SOURCE        
 
RetentionPolicy.CLASS      , class        ,        
 
RetentionPolicy.RUNTIME              ,      。
@Target 주해 의 역할 목표,주로

 ElementType.TYPE      、 、  、  
 
 ElementType.FIELD       、     
 
 ElementType.METHOD     
 
 ElementType.PARAMETER       
 
 ElementType.CONSTRUCTOR       
 
 ElementType.LOCAL_VARIABLE       
 
 ElementType.ANNOTATION_TYPE      (@Retention         )
 
 ElementType.PACKAGE     
 
 ElementType.TYPE_PARAMETER        ,     、   、     (jdk1.8  )
3.주해 실례
매 거 진 에서 컴 파 일 러 는 매 거 진 이름 만 제한 하고 중복 할 수 없습니다.개발 과정 에서 매 거 진 Id 중복 문제 가 자주 발생 합 니 다.모든 사람 이 기능 을 개발 할 때 자신의 기능 에 만 집중 하고 코드 를 직접 제출 하기 때문에 매 거 진 Id 충돌 에 주의 하지 않 습 니 다.이 럴 때 아래 코드 를 사용 하여 매 거 진 자체 검 사 를 할 수 있 습 니 다.프로젝트 의 개발 단계 에서 코드 의 문 제 를 제때에 발견 할 수 있다.아래 코드 를 조금 만 수정 하면 항목 에서 사용 할 수 있 습 니 다.가 져 가 고 쓰 지 않 습 니 다.
1.사용자 정의 주석
열 거 된 key 가 중복 되 었 는 지 확인 합 니 다.

package org.pdool.anno;
 
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author   
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CheckEnum {
}
2.대응 하 는 방법 에 주 해 를 추가

package org.pdool.anno;
/**
*      
* @author   
*/
public enum ResType {
   GOLD(1),
   DIAMOND(2),
   //  :    
   SILVER(2);
   int type;
 
   @CheckEnum
   public int getType() {
       return type;
  }
 
   ResType(int type) {
       this.type = type;
  }
}
3.프로젝트 가 시 작 될 때 주해 의 매 거 진 을 검사 합 니 다.

package org.pdool.anno;
 
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
 
/**
* @author   
*/
public class Aain {
   public static void main(String[] args) throws InvocationTargetException,IllegalAccessException {
       //         
       Method[] declaredMethods = ResType.class.getDeclaredMethods();
       Method annoMethod = null;
       for (Method declaredMethod : declaredMethods) {
           CheckEnum  annotation = declaredMethod.getAnnotation(CheckEnum.class);
           if (annotation != null){
               annoMethod = declaredMethod;
              break;
          }
      }
       Set<Object> set = new HashSet<>();
       //        id
       Object[] oo = ResType.class.getEnumConstants();
       for (Object o : oo) {
           Object invoke = annoMethod.invoke(o);
           if (!set.contains(invoke)){
               set.add(invoke);
          }else {
               System.out.println("   key "+ o +" -- "+ invoke);
          }
      }
  }
}
图片
주:위의 코드 는 간단 한 인 스 턴 스 일 뿐 핵심 코드 를 보 여주 기 위해 서 입 니 다.프로젝트 에서 사용 할 때 클래스 를 수정 하여 스 캔 항목 의 가방 을 가 져 올 수 있 습 니 다.모든 열 거 를 옮 겨 다 니 면 프로젝트 에서 사용 할 수 있 습 니 다.
총화
주 해 는 코드 의 운행 에 영향 을 주지 않 지만 실행 중인 프로그램 에 더 많은 정 보 를 제공 할 수 있 습 니 다.주해 도 많은 프레임 워 크 의 기본 기술 착안점 입 니 다.예 를 들 어 Spring 의 주해,Lombok 의 각종 주 해 는 주 해 를 사용 하여 많은 일 을 했 습 니 다.주해 가 어떻게 된 일 인지 알 게 되 었 고 프레임 워 크 를 이해 하 는 것 도 쉬 울 것 입 니 다.
자바 주해 지식 을 자세히 설명 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 주해 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기