java之注解

1.理解注解

  1.java 1.5开始,java增加了对元数据的支持也就是注解,可以为程序编译、类加载、运行时被读取,并执行相应的处理。

  2.Annotation修饰符可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。@XXX("name=value"...)

  3.注解的继承是相对于类而言的,对于接口时无效的 ;注解只继承父类的类注解,不继承方法注解

  4.不影响代码逻辑,只是辅助

  5.没有注解解释器,注解就没有意义

  6.如图 

   

 

2.基本注解

@Override :用来指定方法覆载的,它可以强制一个子类必须要覆盖父类的方法。

@Deprecated :用来表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。 

@SuppressWarnings:注解会告知编译器阻止特殊类型的警告信息。@SuppressWarnings("unchecked")

@SafeVarargs【Java7新增】:如果把一个没有定义泛型的集合,赋给一个有定义泛型的集合,会发生堆污染,会报错。@SafeVarargs可以抑制这个报错。

@FunctionalInterface【Java8新增】:用来限制修饰的接口必须是一个函数式接口,不然会报错。

@Repeatable【java8新增】:可重复的注解 元注解

 

 

3.元注解

  1.元注解:描述注解的注解,java提供了四种元注解,即@Retention、@Target、@Documented、@Inherited、@Repeatable

  2.介绍这五中种元注解的使用

@Retention 保留策略(指定一条注解保留多长时间)   RetentionPolicy类型取值有三个【source、class、runtime】

@Retention(RetentionPolicy.RUNTIME)
public @interface MyTag(){
    定义属性...          
}

-source: 不包含在类文件(.class文件)中的注解,但存在于源代码中

-class : 包含在类文件中的注解,但JVM不需要将它们载入,默认保留策略

-runtime:包含在类文件中的注解,并由JVM载入,通过反射获取该注释

 

 @Target  限制Annotaion能修饰类中的那些元素 (@Target(ElementType.ANNOTATION_TYPE))

@Target(ElementType.FIELD)
public @interface MyTag{
  自定义体  ...
}
  • ANNOTATION_TYPE : 只能用来修饰Annotaion
  • FIELD : 修饰成员变量
  • CONSTRUCTOR : 只能用来修饰构造器
  • METHOD : 只能用来修饰方法
  • LOCAL_VARIABLE : 只能用来修饰局部变量
  • PACKAGE : 只能用来修饰包
  • PARAMETER : 只能用来修饰参数
  • TYPE : 只能用来修饰类、接口(包括注解类型)或枚举定义 相当于类的任何元素

 @Documented : 指定Annotaion是否能包含到javadoc生成的文档中。

 @Inherited : 指定Annotaion具有继承性,父类定义了这个注解,那么子类也会继承这个注解。

 @Repeatable : 可重复注解,表明标识该注解可以多次使用相同的声明或类型使用。

 

 4.自定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
   String description() default "描述";
}
  

 

posted @ 2019-04-03 22:01  _huijianjian  阅读(171)  评论(0编辑  收藏  举报
levels of contents