美文网首页
自定义注解

自定义注解

作者: 好大一只鹏 | 来源:发表于2019-12-18 10:04 被阅读0次

    创建Java自定义注解

    创建自定义注解和创建一个接口相似,但是注解的interface关键字需要以@符号开头。我们可以为注解声明方法。我们先来看看注解的例子,然后我们将讨论他的一些特性。

    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;
    /*-----------------定义注解--------------------*/
    @Retention(RetentionPolicy.SOURCE)//声明注释保留时长
    @Target(ElementType.METHOD)//声明可以使用此注解的元素级别类型(如类、方法变量等)
    @Documented//表示当标注了NeedRecord注解的对象在被javadoc生成文档时,NeedRecord注解将会被API文档记录
    public @interface NeedRecord {//定义注解
        String userName() default "anonymous";//定义注解成员,同时用default声明默认值,如果不想声明默认值,去掉default部分即可
        String value() ;
    }
    /*------------------使用注解实例1-----------------*/
    @NeedRecord("login")
    public void login(){
        System.out.println("I'm zenghao ,I'm logining");
    }
    /*------------------使用注解实例2-----------------*/
    @NeedRecord(userName = "zenghao",value = "login")
    public void login(){
        System.out.println("I'm zenghao ,I'm logining");
    }
    

    四个元注解

    JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用来修饰注解。

    Target类型 描述
    ElementType.TYPE 一> 应用于类、接口(包括注解类型)、枚举
    ElementType.FIELD 一>应用于属性(包括枚举中的常量)
    ElementType.METHOD一> 应用于方法
    ElementType.PARAMETER 一>应用于方法的形参
    ElementType.CONSTRUCTOR一> 应用于构造函数
    ElementType.LOCAL_VARIABLE 一>应用于局部变量
    ElementType.ANNOTATION_TYPE 一>应用于注解类型
    ElementType.PACKAGE 一>应用于包
    ElementType.TYPE_PARAMETER 一>1.8版本新增,应用于类型变量)
    ElementType.TYPE_USE 一>1.8版本新增,应用于任何使用类型的语句中(例如声明语句、泛型和强制转换语句中的类型)

    @Retention
    表明该注解的生命周期
    生命周期类型 描述
    RetentionPolicy.SOURCE一> 编译时被丢弃,不包含在类文件中
    RetentionPolicy.CLASS一> JVM加载时被丢弃,包含在类文件中,默认值
    RetentionPolicy.RUNTIME一> 由JVM 加载,包含在类文件中,在运行时可以被获取到

    @Document
    表明该注解标记的元素可以被Javadoc 或类似的工具文档化

    @Inherited
    表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解

    相关文章

      网友评论

          本文标题:自定义注解

          本文链接:https://www.haomeiwen.com/subject/wauynctx.html