昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

注解

/**

什么是注解(Annotation):

  • ·注解是放在Java源码的类、方法、字段、参数前的一种标签

注解的作用:

  • ·注解本身对代码逻辑没有任何影响
  • ·如何使用注解由工具决定

编译器可以使用的注解:

  • ·@Override:让编译器检查该方法是否正确地实现了覆写
  • ·@Deprecated:告诉编译器该方法已经被标记为“作废”,在其他地方引用将会出现编译警告
  • ·@SuppressWarnings
  • 注解可以定义配置参数:
  • ·配置参数由注解类型定义

·配置参数可以包括:

  • ·所有基本类型
  • ·String
  • ·枚举类型
  • ·数组
  • ·配置参数必须是常量

*缺少某个配置参数将使用默认值
*

  • 如果只写常量,相当于省略了value参数
  • 如果只写注解,相当于全部使用默认值

*/

元注解

使用@Target定义Annotation可以被应用于源码的哪
些位置:
·类或接口:ElementType.TYPE
·字段:ElementType.FIELD
·方法:ElementType.METHOD
·构造方法:ElementType.CONSTRUCTOR
·方法参数:ElementType.PARAMETER


使用@Retention定义Annotation的生命周期:

·仅编译期:RetentionPolicy.SOURCE·
仅class文件:RetentionPolicy.CLASS
·运行期:RetentionPolicy.RUNTIME

如果@Retention不存在,则该Annotation默认为CLASS 

通常自定义的Annotation都是RUNTIME



Annotation的生命周期:
·RetentionPolicy.SOURCE:编译器在编译时直接丢弃
@Override


·RetentionPolicy.CLASS:该Annotation仅存储在class文件中


·RetentionPolicy.RUNTIME:在运行期可以读取该Annotation


使用@Repeatable定义Annotation是否
可重复
·JDK>=1.8


使用@Inherited定义子类是否可继承父

类定义的Annotation
·    仅针对@Target为TYPE类型的
Annotation
·    仅针对class的继承
·    对interface的继承无效


定义Annotation的步骤:
·     用@interface定义注解·
      用元注解(meta annotation)配置注解·
            Target:必须设置·
            Retention:一般设置为RUNTIME·
            通常不必写@Inherited,@Repeatable等等·
    定义注解参数和默认值


posted on 2019-05-06 14:16  Indian_Mysore  阅读(71)  评论(1编辑  收藏  举报

导航