자바 강좌의 자바 주해 annotation 사용 방법

6251 단어 java주해annotation
1. 개요
주해는 방법, 클래스, 하나의 주해가 하나의 클래스와 비슷하고 실례적인 대상에 해당하며 주해를 더하면 하나의 표지를 추가하는 것과 같다.
자주 사용하는 설명: @Override: 부류를 다시 덮어쓰는 방법을 나타냅니다. 이것도 덮어쓰는 부류 방법을 판단할 수 있습니다. 방법 앞에 이 문장을 덧붙입니다. 만약 제시된 오류가 있다면 덮어쓰는 부류 방법이 아닙니다. 제시된 오류가 없으면 덮어쓰는 부류 방법입니다.@SuppressWarnings("deprecation"): 컴파일러의 경고를 취소합니다(예를 들어 사용한 방법이 유행이 지났습니다). @Deprecated: 방법의 맨 위에도 이 문장을 추가합니다. 이 방법이 유행이 지났거나 클래스에 사용되었음을 나타냅니다.

import java.util.ArrayList;
import java.util.List;
public class annotationDemo {
/*
* , , ,
* , @SuppressWarnings( )
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List list=new ArrayList();
}
}
2. 메모 사용자 정의
1. 형식 권한 @interface 주석 이름 {} 단계: 주석 클래스 정의 ---> 주석 클래스를 응용하는 클래스 정의 ---> 주석 클래스를 응용하는 클래스를 반사하는 클래스 (이 클래스는 별도로 정의할 수도 있고 응용 주석 클래스에서 테스트할 수도 있습니다)

import java.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
//
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
@MyAnnotation
//
public class ApplyMyAnnotation {
public static void main(String[] args) {
if (ApplyMyAnnotation.class.isAnnotationPresent(MyAnnotation.class)) {//
MyAnnotation annotation= (MyAnnotation) ApplyMyAnnotation.class
.getAnnotation(MyAnnotation.class);
System.out.println(annotation);
}
   }
}
2. 선언 주기
형식: 예를 들어 @RetentionPolicy.CLASS)은 고유한 콜아웃 클래스에서 주기를 정의하고 @Retention(파라미터 유형) 매개변수 유형은 RetentionPolicyRetentionPolicy입니다.CLASS: 클래스 파일에서 실행 중인 가상 시스템은 메모 RetentionPolicy를 유지하지 않습니다.RUNTIME: 클래스 파일에서 실행 시 가상 메모 RetentionPolicy가 유지됩니다.SOURCE: 소스 파일에서 메모 삭제SuppressWarnings 및 Override는 RetentionPolicy입니다.SOURCE, Deprecated는 RetentionPolicy입니다.RUNTIME, 실행할 때 정의된 대로 호출하려면 RetentionPolicy가 필요합니다.RUNTIME, 기본값은 RetentionPolicy입니다.CLASS:
3. 대상 형식 지정: 예를 들어 메서드에서 @Target(ElementType.METHOD)으로 정의된 메모가 어떤 멤버를 메모할 수 있는지 지정합니다.이 주석을 설명하지 않으면, 모든 프로그램의 요소에 넣을 수 있습니다.패키지, 인터페이스, 매개 변수, 방법, 국부 변수, 필드... 등이 될 수 있습니다.

//
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})// ,
public @interface MyAnnotation {
}
@MyAnnotation
//
public class ApplyMyAnnotation {
@MyAnnotation//
public static void main(String[] args) {
if (ApplyMyAnnotation.class.isAnnotationPresent(MyAnnotation.class)) {//
MyAnnotation annotation = (MyAnnotation) ApplyMyAnnotation.class
.getAnnotation(MyAnnotation.class);
System.out.println(annotation);
}
}
}
3. 메모에 속성 추가 1.형식 메모의 속성 설정은 8개의 기본 데이터 형식, String, 매거, 메모, Class, 그룹 형식, 2.주의점은 주해에 하나의 속성만 있거나 하나의 속성만 값을 부여해야 한다면 호출할 때 직접 쓸 수 있고 속성 이름을 지정할 필요가 없습니다. 주해의 속성이 그룹 형식이고 값을 부여할 때 하나의 값만 부여한다면 {}를 생략할 수 있습니다.3. 예시 3.1.속성 유형(String)

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.*;
//
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() ;
String Color()default "red";// "red"
}
@MyAnnotation("java")
public class ApplyMyAnnotation {
public static void main(String[] args) {
/**
* , ,
*/
if (ApplyMyAnnotation.class.isAnnotationPresent(MyAnnotation.class)) {//
MyAnnotation annotation = (MyAnnotation) ApplyMyAnnotation.class
.getAnnotation(MyAnnotation.class);
System.out.println("value="+annotation.value());
System.out.println("Color="+annotation.Color());
}
}
  }
결과:value=javaColor=red는 호출된 프로그램에서 하나의 속성만 값을 부여해야 한다면 속성 이름을 생략할 수 있음을 알 수 있다.그렇지 않으면 @ 메모 클래스 (속성 이름 = 값) 3.2.종합 유형

/* */
public enum Week{
SUN,MON;
}
/**
*
*/
public @interface annotationText {
String value();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.*;
//
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() ;
String Color()default "red";// "red"
Week week() default Week.MON;//
int [] array() default {1,2,3};//
annotationText annotation() default @annotationText("MY");//
Class classDemo() default Integer.class;//Class
}
@MyAnnotation(value="java",Color="green",week=Week.SUN,array=5,annotation=@annotationText("YOU"),classDemo=String.class)// array={4,5,6}
public class ApplyMyAnnotation {
public static void main(String[] args) {
/**
* , ,
*/
if (ApplyMyAnnotation.class.isAnnotationPresent(MyAnnotation.class)) {//
MyAnnotation annotation= (MyAnnotation) ApplyMyAnnotation.class
.getAnnotation(MyAnnotation.class);
System.out.println("value="+annotation.value());
System.out.println("Color="+annotation.Color());
System.out.println("week="+annotation.week());
System.out.println("array ="+annotation.array()。length);
System.out.println(" ="+annotation.annotation()。value());
System.out.println("Class ="+annotation.classDemo());
}
}
}
결과:

value=java
Color=green
week=SUN
array =1
=YOU
Class =classjava.lang.String
4. Method의 메모

importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
/**
*
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface annotationText{
Stringvalue();
}
publicclassApplyMyAnnotation{
publicstaticvoidmain(String[]args)throwsException{
Methodmethodshow=ApplyMyAnnotation.class.getMethod("show");
annotationTextanno=methodshow.getAnnotation(annotationText.class);
System.out.println(anno.value());
}
@annotationText("java")
publicvoidshow(){
System.out.println("hello");
}
}
결과:java

좋은 웹페이지 즐겨찾기