标签:annotation 注解 使用注解
注解定义为:
public @interface AnnotationName{
}
使用注解
@ AnnotationName
public void func(){
}
@Retention:保留的阶段。
@Target:注解修饰的目标,可以说类,方法,成员变量,包。
@Documented:是否被javadoc提取成文的。
@Inherited:注解是否能继承。
注解的成员变量定义:
public @interface AnnotationName{
String name() default "abc";
int age() default 33;
boolean flag();
}
其中default修饰的表示默认值。
定义注解类
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Testable {
boolean isSkiped() default false;
String name();
}
被注解修饰的类
public class Foo {
public static void m1() {
System.out.println("I am m1");
}
@Testable(isSkiped = false, name = "methond2")
public static void m2() {
System.out.println("I am m2");
}
@Testable(name = "methond3")
public static void m3() {
System.out.println("I am m3");
}
@Testable(isSkiped = true, name = "methond4")
public static void m4() {
System.out.println("I am m4");
}
}
处理注解的工具类
import java.lang.reflect.*;
public class TestAnnotation {
public static void main(String[] args) throws SecurityException,
ClassNotFoundException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
for (Method m : Class.forName("Foo").getMethods()) {
if (m.isAnnotationPresent(Testable.class)) {
System.out.print(m.getName()
+ " is Annotation element, so invoke result is: ");
m.invoke(null);
} else {
System.out.println(m.getName() + " is not Annotation element");
}
}
}
}
输出:
m1 is not Annotation element
m2 is Annotation element, so invoke result is: I am m2
m3 is Annotation element, so invoke result is: I am m3
m4 is Annotation element, so invoke result is: I am m4
wait is not Annotation element
wait is not Annotation element
wait is not Annotation element
equals is not Annotation element
toString is not Annotation element
hashCode is not Annotation element
getClass is not Annotation element
notify is not Annotation element
notifyAll is not Annotation element
标签:annotation 注解 使用注解
原文地址:http://blog.csdn.net/csujiangyu/article/details/46674573