자바 강좌의 자바 주해 annotation 사용 방법
6251 단어 java주해annotation
주해는 방법, 클래스, 하나의 주해가 하나의 클래스와 비슷하고 실례적인 대상에 해당하며 주해를 더하면 하나의 표지를 추가하는 것과 같다.
자주 사용하는 설명: @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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.