자바 진급 지식 주해

1.주해 의 개념
1.주해 공식 해석
주해
메타 데이터 라 고 하 는데 코드 등급 의 설명 입 니 다.이것 은 JDK 1.5 와 이후 버 전에 도 입 된 특성 입 니 다.클래스,인터페이스,매 거 진 것 과 같은 차원 에서 가방,클래스,필드,부분 변수,방법 매개 변수 등 앞에서 이런 요 소 를 설명 하고 설명 할 수 있 습 니 다.
주해 의 역할 분류
  • 문서 작성:코드 에 표 시 된 메타 데 이 터 를 통 해 문 서 를 생 성 합 니 다[doc 문서 생 성]
  • 코드 분석:코드 에 표 시 된 메타 데 이 터 를 통 해 분석[사용 반사]
  • 컴 파일 검사:코드 에 표 시 된 메타 데 이 터 를 통 해 컴 파일 러 가 기본 적 인 컴 파일 검 사 를 실현 할 수 있 도록 합 니 다[Override]
  • 주 해 는 운영 체제 에 따라 분류 된다.
  • 소스 코드 주석:주 해 는 소스 코드 에 만 존재 하고'class 파일'로 컴 파일 된 후에 존재 하지 않 습 니 다
  • 4.567917.컴 파일 시 주석:주 해 는 소스 코드 가 존재 하 는 토대 에서 도'class 파일'에 존재 하지만 실행 단계 에 존재 하지 않 습 니 다.예 를 들 어@Override
  • 실행 시 주석:주 해 는 실행 단계 에 존재 하고 프로그램의 운행 과정 에 영향 을 줄 수 있 습 니 다.예 를 들 어@Autowired
  • 2.주해 와 주해 의 차이
    (1)주석:코드 를 설명 하고 프로그램 을 설명 하 는 데 사용 되 는데 주요 목적 은 컴퓨터 에 보 여주 고 프로그램의 운행 에 영향 을 줄 수 있 도록 하 는 것 이다.
    (2)주석:코드 의 역할 과 관건 적 인 지식 을 설명 하 는 데 사용 되 며 문자 설명 프로그램 을 사용 하 는 것 은 프로그래머 에 게 보 여 주 는 것 으로 프로그래머 가 주석 된 코드 를 가장 빠 른 시간 에 이해 할 수 있 도록 하 는 것 이다.
    2.주석 과 원 주 해 를 내장 합 니 다.
    1.자주 사용 하 는 내장 주해
  • @Override:이 주석 표 시 된 방법 이 부모 클래스 에서 계승 되 는 지 확인 합 니 다
  • @Deprecated:표 시 된 내용 이 시간 이 지 났 음 을 설명 하고 조만간 업데이트 되 어 지 워 질 수 있 음 을 암시 합 니 다
  • @SuppressWarnings:경 고 를 누 르 면 표 시 된 부분 에 경고 가 발생 하지 않 습 니 다.자주 사용 하 는 매개 변 수 는@SuppressWarnings("all")입 니 다
  • 4.567917.@SafeVarargs:매개 변수 안전 유형 설명 은 개발 자 에 게 매개 변수 로 안전 하지 않 은 조작 을 하지 말 라 고 일 깨 워 주 는 것 이 목적 입 니 다.그 존 재 는 컴 파일 러 가 unchecked 와 같은 경 고 를 하 는 것 을 막 을 수 있 습 니 다2.자주 사용 하 는 원 주해
    원 주해:주 해 를 설명 하 는 주해 입 니 다.주 해 를 만 들 때 사용 합 니 다.
    1.@Target 속성 값:
  • Element Type.TYPE:수식 류,인터페이스 또는 매 거 진 유형
  • ElementType.METHOD:수식 할 수 있 는 방법ElementType.FIELD:구성원 변 수 를 수식 할 수 있 습 니 다ElementType.PARAMETER:매개 변 수 를 수식 할 수 있 습 니 다Element Type.CONSTRUCTOR:구조 기 를 수식 할 수 있 습 니 다
  • ElementType.ANNOTATION_TYPE:주 해 를 수식 할 수 있 습 니 다
  • ElementType.PACKAGE:가방 을 꾸 밀 수 있 습 니 다
  • ElementType.LOCAL_VARIABLE:국부 변 수 를 수식 할 수 있 습 니 다
  • 2.@Retention 속성 값:
    4
  • Retention Policy.SOURCE:주 해 는 원본 코드 에 만 존재 하고 class 로 컴 파일 된 후에 사 라 졌 습 니 다
  • 4
  • Retention Policy.CLASS:주 해 는 원본 코드 와 class 에 존재 합 니 다.실행 할 때 사 라 졌 습 니 다.이것 은 Retention 의 기본 값 입 니 다
  • 4
  • RetentionPolicy.RUNTIME:주 해 는 원본 코드,class,실행 시 모두 존재 합 니 다.반 사 를 사용 하려 면 반드시 이런 유형 으로 정의 해 야 합 니 다
  • 3.@Documented:이 주해 의 역할 은 이 주해 표시 의 주 해 를 자바 doc 파일 에 포함 시 킬 수 있 음 을 나타 내 는 것 입 니 다.
    4.@Inherited:피 자 류 가 계승 할 수 있 는 지 설명 합 니 다.
    3.사용자 정의 주석
    1.사용자 정의 주해 기초 지식
    1.형식:
    
    @Inherited//   public @interface zhujie{}
    2.주해 본질:주해 의 본질은 하나의 인터페이스 이 고 이 인 터 페 이 스 는 기본적으로 Annotation 을 계승 한다.
    
    public interface MyAnno extends java.lang.annotation.Annotion
    3.속성:인터페이스 에서 정의 할 수 있 는 내용(구성원 방법,추상 적 방법)
    속성의 반환 값:
    8 가지 기본 데이터 유형
    문자열 류,인터페이스,매 거주해
    이상 유형의 배열속성 할당 주의사항
  • 속성 을 정의 할 때 default 키 워드 를 사용 하여 속성 에 기본 초기 화 값 을 주면 주 해 를 사용 할 때 속성 대 가 를 하지 않 을 수 있 습 니 다.그렇지 않 으 면 속성 대 가 를 해 야 합 니 다
  • 한 속성 만 할당 이 필요 하 다 면 속성의 이름 이 value 이 고 주 해 를 사용 하여 속성 할당 을 할 때 value 는 생략 할 수 있 고 직접 값 을 정의 하면 됩 니 다
  • 배열 할당 시 값 은{}소 포 를 사용 해 야 합 니 다.배열 에 값 이 하나 밖 에 없 으 면{}은 생략 하고 쓸 수 있 습 니 다
  • 2.사용자 정의 주해 사용 을 보 여 줍 니 다.
    사용자 정의 주석 주석
    
    @Retention(value = RetentionPolicy.RUNTIME)
    @Target(value = ElementType.TYPE)
    public @interface annotation {
        String name() default "  ";
        int age();
        int[] score();
    }
    위 주석 클래스 TestAnnotation 사용 하기
    
    //name     ,      name  ,        
    @annotation(age=20,score={99,100,100})
    public class TestAnnotation {
    
        public static void main(String[] args) throws ClassNotFoundException {
            Class clazz = Class.forName("test.TestAnnotation");
            annotation annotation = (annotation) clazz.getAnnotation(annotation.class);
            System.out.println("  :"+annotation.name()+"    :"+annotation.age());
            System.out.print("   :");
            int[] score=annotation.score();
            for (int score1:score){
                System.out.print(score1+" ");
            }
        }
    
    }
    실행 결과

    3.프로그램 에서 주해 의 역할 을 보 여 줍 니 다.
    두 가지 방법:
    4.567917.유형 대상 호출isAnnotationPresent(Class<? extends Annotation> annotationClass)특정한 주 해 를 적 용 했 는 지 판단 합 니 다
  • getAnnotation()방법 으로 Annotation 대상 을 얻 거나 getAnnotations()방법 으로 이 클래스 에 적용 되 는 모든 주 해 를 얻 을 수 있 습 니 다
  • 1.사용자 정의 주석 만 들 기
    
    @Retention(value = RetentionPolicy.RUNTIME)
    @Target(value = ElementType.FIELD)
    public @interface StringNull {
    
    }
    2.실체 클래스 만 들 기
    
    public class Student {
        @StringNull
        public String name=null;
    
        @StringNull
        public String xuehao=null;
    
        @StringNull
        public String sex=null;
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setXuehao(String xuehao) {
            this.xuehao = xuehao;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
    3.테스트 클래스 생 성,테스트 주해
    
    public class TestAnnotation {
    
        public static void main(String[] args) throws Exception{
            Class clazz = Class.forName("test.Student");
            Student student =(Student) clazz.newInstance();
            student.setName("  ");
            Field[] fields= clazz.getFields();
            for(Field f:fields){
                if(f.isAnnotationPresent(StringNull.class)){
                    if(f.get(student)==null){
                        System.out.println(f.getName()+":        ");
                    }else{
                        System.out.println(f.getName()+":"+f.get(student));
                    }
                }
            }
        }
    }
    4.실행 결과

    이상 은 자바 진급 지식 주해 의 상세 한 내용 을 상세 하 게 설명 하 는 것 입 니 다.자바 주해 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기