Java之Annotation

来源:互联网 发布:sop16 单片机 编辑:程序博客网 时间:2024/06/08 16:07

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