JDK1.5引入了annotaion
自定义一个注解
package com.mark.learn.anno;
import java.lang.annotation.*;
/**
* Created by Mark on 2017/8/11.
*/
@Target(ElementType.METHOD)
@Documented //可抽取为文档
@Inherited //可被继承
@Retention(RetentionPolicy.RUNTIME) //保留策略 运行时
public @interface Mark {
//@interface 类似于接口 成员变量 抽象方法 一般不用抽象方法
//成员变量的申明 使用 申明无参数方法的形式 可以用default关键字赋默认初始值值
String name() default "鲁班七号";
int age();
}
使用自定义注解 就像使用修饰符
package com.mark.learn.anno;
/**
* Created by Mark on 2017/8/11.
*/
public class A {
//使用自定义注解Mark 成员变量name有初始值 age需赋值
@Mark(age=3)
public static void useAnno(){
System.out.println("Annotation!!!");
}
}
测试
package com.mark.learn.anno;
/**
* Created by Mark on 2017/8/11.
*/
public class AnnoTest {
public static void main(String[] args) throws NoSuchMethodException {
Mark useAnno = new A().getClass().getMethod("useAnno").getAnnotation(Mark.class);
int age = useAnno.age();
String name = useAnno.name();
System.out.println("name: "+name+" ,age :"+age);
if (age==3){
A.useAnno();
}
}
}
输出结果:
name: 鲁班七号 ,age :3
Annotation!!!
Process finished with exit code 0