• JAVA-元注解和注解



    故事背景:罗芭是一名正在学习java的妹子,最近看甲骨文的官方文档,学到了注解Annotation这里,发现注解我可以自定义,但罗芭不会诶。但是布洛特 亨德尔已经学习过了java注解。
    罗芭,help me~
    唰唰唰,俺老亨来也。
    老亨:首先,实现一个自定义注解需要了解元注解,因为自定义注解实现需要元注解做支持。
    这里我们先做一下了解。

    1. 元注解 (Meta-Annotation)

    在这里插入图片描述

    @Retention:
    用于指定被修饰的自定义注解可以保留多久,该元注解有如下属性值:
    RetentionPolicy.SOURCE:编译器将直接丢弃被修饰的注解。
    RetentionPolicy.CLASS:默认值,编译器将把注解记录在class文件中,当运行Java程序时,虚拟机不再保留注解;
    RetentionPolicy.RUNTIME:编译器将把注解记录在class文件中,当运行java程序时,虚拟机保留注解,程序可以通过反射获取该注解;

    @Target:
    用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,常用属性值有:
    ElementType.FIELD:应用于全局属性
    ElementType.METHOD:应用于方法
    ElementType.PARAMETER:应用于方法的参数
    ElementType.TYPE:应用于类、接口或者枚举声明

    @Documented
    执行javadoc命令时,被该元注解修饰的自定义注解也会生成在文档中

    @Inherited
    如果父类所使用的注解有@Inherited修饰,则子类可以继承该注解,否则不能继承。

    使用元注解的示例:

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface MyAnnotation {
        // 注解属性
        String value();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    那么注解是什么呢?

    罗芭:嘛是注解呀?

    老亨:注解是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能
    可以理解注解是一张标签,给商品标记价格、材料、尺码等信息,标签是不可以卖滴,通过贴标签这样的形式,让商品有了金钱属性。类如果被贴上了标签,就代表这个类拥有了这个标签所代表的功能或者属性,用这种方式来简化代码。
    在这里插入图片描述
    以下是一个使用注解的示例:

    public class MyClass {
        @MyAnnotation("Hello")
        public void myMethod() {
            // 代码逻辑
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在上面的示例中,我们在 myMethod 方法上应用了自定义注解 @MyAnnotation。使用 @MyAnnotation(“Hello”) 可以为该方法添加额外的元数据信息。

    元注解和注解的关系是什么?

    罗芭:你刚才说了元注解和注解,他俩有什么联系呀?
    老亨:元注解是可以注解到注解上的注解(也是一种标签,是给注解加标签的),或者说元注解是一种基本注解,但是它能够应用到其它的注解上面

    注解是什么时候被JDK引入的?

    老亨:注解并不是一开始就有的原住民,是在jdk1.5之后引入的。

    为什么JDK引入注解?

    罗芭:为什么要用这个注解尼?

    老亨:和没有注解之前进行对比,有了注解之后可以提高编码效率。
    如:开发人员用注解写好一个类,其他开发人员能直接用;我们写一段程序,使用注解之后,可以直接生成文档。

    注解用在什么地方?什么时候使用注解?

    在这里插入图片描述
    罗芭:不行,知识好多,我要打包带走,先把基础概念弄清楚,再实现自定义注解吧。
    老亨:你说的对,那你先消化一下吧。

  • 相关阅读:
    怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
    小程序开发.uniapp.生命周期
    java 多线程 Thread 互斥锁
    解决Devops部署Java应用中文乱码
    prometheus初窥
    Docker入门
    大数据从入门到精通(超详细版)之HiveServer2的使用
    Python | Leetcode Python题解之第150题逆波兰表达式求值
    维格云筛选组件入门教程
    Springboot毕设项目公益众筹管理系统h7sur(java+VUE+Mybatis+Maven+Mysql)
  • 原文地址:https://blog.csdn.net/aqiuisme/article/details/128198013