注释

  • 1.概述

    • 1)正确的来说注解是反射的一部分,没有反射,注解无法正常使用
    • 2)注解的功能:
      • 01. 作为特定的标记,程序可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。标记可以加在包,类,字段,方法,方法的参数以及局部变量上,使用注解有助于阅读程序,有利于实现程序的自动化检查和实现,简化编程。/
        02. 额外信息的载体/以后javac编译器、开发工具或其他应用程序可以通过反射来了解你的类,以及各种元素上有无何种标记,看你有什么标记,就去执行相应的命令和干相应的事/
        03. 在编译时进行格式检查。如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出/
        04. 跟踪代码依赖性,实现替代配置文件功能,减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量/
        05. Annotation是被动的元数据,永远不会有主动行为/但凡Annotation起作用的场合都是有一个执行机制/调用者通过反射获得了这个元数据然后根据它采取行动。/
        06. 每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工作,就可以考虑使用注解来简化与自动化该过程。/
    • 3)分类描述:
      OverAll:元注解的作用就是负责注解其他注解

      • 3.1)【@target】说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)



        3.2) 【Retention】定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

        有三种取值(代表三个阶段):
    • RetentionPolicy.SOURCE:保留注解到java源文件阶段,例如Override、SuppressWarnings
    • RetentionPolicy.CLASS:保留注解到class文件阶段,例如
    • RetentionPolicy.RUNTIME:保留注解到运行时阶段即内存中的字节码,例如Deprecated
      */
      【一般来说,源码状态运行和编译状态运行的注解往往和编译器相关,比如报错,警告,类编译参数等,】

      3.3) 【@Documented】是生成说明文档时把类的解释添加进去。
      3.4) 【注解只有方法,没有字段,因为注解也是一个interface,只不过前面加了一个@符号,且定义的方法无法实现,类似C++中的纯虚函数】
      3.5) @Deprecated//自定义:备注过时的方法信息 3.6) @SuppressWarnings(“deprecation”)//阻止警告
      3.7) @Override告诉编译器这个方法是一个重写方法(描述方法的元数据),如果父类中不存在该方法,编译器便会报错,提示该方法没有重写父类中的方法。
  • 2.Demo

    • 2.1)
    • 2.2)
    • 2.3)
    • 2.4)
    • 2.5

参考文档:
https://www.zhihu.com/question/24401191
http://www.importnew.com/10294.html
http://www.cnblogs.com/ITtangtang/p/3974531.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值