주해 생 성 및 사용
4628 단어 자바
1. 본 사례 에 사 용 된 주해 와 해석 2 를 설명 하고 주해 3 을 만 들 며 주 해 를 사용 하 는 클래스 4 를 만 들 고 반사 체 제 를 이용 하여 클래스 코드 정 보 를 분석 합 니 다.
============================================================================================
1. 주해 하 는 방법 은 매개 변수 가 있어 서 는 안 됩 니 다.
주해 의 반환 형식 은 '기본 형식', '문자열', '매 거 진', 'Class',' 반환 형식의 배열 '입 니 다.
주 해 는 원 주 해 를 추가 할 수 있 습 니 다:
Documented: 이 주석 을 javadoc 에 압축 해제 합 니 다.
Target: 이 주 해 를 어디 에 사용 하 는 지 표시 합 니 다. method: 설명 방법
상속
Retention: 이 주석 정 보 를 어느 단계 에 저장 하 는 지 표시 합 니 다. Retention Policy. RUNTIME: 실행 기간 보류
2、
package com.gyj.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* @author GYJ
* @date 2014-3-23
*/
@Documented
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodInfo {
String author() default "gyj";
String date();
int revision() default 1;
String comments();
}
3、
package com.gyj.annotation;
import java.util.ArrayList;
import java.util.List;
public class AnnotationExample {
/**
* @param args
*/
public static void main(String[] args) {
}
@Override
@MethodInfo(author = "gyj", comments = "main method", date = "2014", revision = 1)
public String toString() {
return "overriden to string method";
}
@Deprecated
@MethodInfo(comments = "method1", date = "2019")
public static void oldMethod() {
System.out.println("old method don't use it");
}
@SuppressWarnings({"unchecked", "deprecation"})
@MethodInfo(author = "gyj", comments = "main genericsTest", date = "2015", revision = 2)
public static void genericsTest() {
List l = new ArrayList<>();
l.add("abc");
//
oldMethod();
}
}
4、
package com.gyj.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class AnnotationParsing {
/**
*
* @param args
*/
public static void main(String[] args) {
try {
Method[] method = Class.forName("com.gyj.annotation.AnnotationExample").getMethods();
for (Method method1 : method) {
// MethodInfo
if (method1.isAnnotationPresent(com.gyj.annotation.MethodInfo.class)) {
for (Annotation annotation : method1.getAnnotations()) {
//
System.out.println(" " + annotation + " " + method1 + "
");
}
//
MethodInfo methodInfo = method1.getAnnotation(MethodInfo.class);
if (methodInfo.revision() == 1) {
System.out.println("revision 1 " + methodInfo);
}
}
}
} catch (SecurityException | ClassNotFoundException e) {
e.printStackTrace();
}
}
//out put===========================
/* @com.gyj.annotation.MethodInfo(author=gyj, revision=1, comments=main method, date=2014) public java.lang.String com.gyj.annotation.AnnotationExample.toString()
revision 1 @com.gyj.annotation.MethodInfo(author=gyj, revision=1, comments=main method, date=2014)
@java.lang.Deprecated() public static void com.gyj.annotation.AnnotationExample.oldMethod()
@com.gyj.annotation.MethodInfo(author=gyj, revision=1, comments=method1, date=2019) public static void com.gyj.annotation.AnnotationExample.oldMethod()
revision 1 @com.gyj.annotation.MethodInfo(author=gyj, revision=1, comments=method1, date=2019)
@com.gyj.annotation.MethodInfo(author=gyj, revision=2, comments=main genericsTest, date=2015) public static void com.gyj.annotation.AnnotationExample.genericsTest()*/
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.