package com.sy.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAnnotation {
String p() default "shiyang";
String p2();
}
使用注释的类:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
package
com.sy.annotation;
public class MyTest {
@MyAnnotation(p2 = " haha " )
public void output() {
System.out.println( " output something " );
}
}
public class MyTest {
@MyAnnotation(p2 = " haha " )
public void output() {
System.out.println( " output something " );
}
}
反射读取注释的类:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
package
com.sy.reflection;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import com.sy.annotation.MyAnnotation;
import com.sy.annotation.MyTest;
public class MyReflection {
public static void main(String[] args) throws Exception{
MyTest myTest = new MyTest();
Class < MyTest > c = MyTest. class ;
Method method = c.getMethod( " output " , new Class[]{});
if (method.isAnnotationPresent(MyAnnotation. class )) {
method.invoke(myTest, new Object[]{});
MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation. class );
String p = myAnnotation.p();
String p2 = myAnnotation.p2();
System.out.println(p + " , " + p2);
}
Annotation[] annotations = method.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation.annotationType().getName());
}
}
}
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import com.sy.annotation.MyAnnotation;
import com.sy.annotation.MyTest;
public class MyReflection {
public static void main(String[] args) throws Exception{
MyTest myTest = new MyTest();
Class < MyTest > c = MyTest. class ;
Method method = c.getMethod( " output " , new Class[]{});
if (method.isAnnotationPresent(MyAnnotation. class )) {
method.invoke(myTest, new Object[]{});
MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation. class );
String p = myAnnotation.p();
String p2 = myAnnotation.p2();
System.out.println(p + " , " + p2);
}
Annotation[] annotations = method.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation.annotationType().getName());
}
}
}