关于Java中的注解

在Java1.5以后引入了注解这一说法,首先什么是注解?

注解是一种修饰符,除了传递信息我们也可以通过注解来生成代码,同时它也可以决定程序的执行顺序

能够添加到 Java 源代码的语法元数据。类、方法、变量、参数、包都可以被注解,可用来将信息元数据与程序元素进行关联。Annotation 中文常译为“注解”。

注解的作用:

  • 标记用于告诉编译器的一些信息
  • 编译时的动态处理如动态生成一些代码
  • 运行时动态处理如得到注解的信息

创建java自定义注解

创建自定义注解和接口相似但是 注解的关键字要以@开头如

   public @interface MethodInfo{//这里的@interface就是自定义注解的
        String author() default 'Pankaj';
        String date();
        int revision() default 1;
        String comments();
    }

自定义注解的语法:

  • 注解方法不能带有参数
  • 注解方法返回值的类型限制为:基本类型,String,Enums(枚举),Annotation或者是这些类型的数组
  • 注解方法可以有默认值
  • 注解本身可以包含元注解,元注解可以用来解释其他注解
    这里的三个作用实际对应着后面自定义 Annotation 时说的 @Retention 三种值分别表示的 Annotation

    四种元注解

    1,@Documented:这个表示拥有这个注解的的元素可以被javadoc此类工具文档化。这种类型应该用于注解那些影响客户使用带注释的元素声明的类型。如果一种声明使用Documented进行注解,这种类型的注解被作为被标注的程序成员的公共API

    2,@Target(目标):该类型的注解可以注解程序元素的范围元注解的取值可以为TYPE,METHOD(方法),CONSTRUCTOR(构造方法),FIELD(领域)等。如果Target元注解没有出现,那么定义的注解可以应用于程序的任何元素。

3,@Inherited(继承):指明该类型的注解将会被自动继承。如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,那么也将自动查询当前类的父类是否存在Inherited元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类。

4,.@Retention(保留):指明了该Annotation被保留的时间长短。RetentionPolicy(编译时注解)取值为SOURCE,CLASS,RUNTIME(运行时)。

java内建的注解

一共有三种注解情况:
1, @Override(重写):当我们重写父类方法时,我们需要这个注解来告诉编译器,这样当父类中的方法移除或者发生更改时编译器将会提示错误信息

  1. @Deprecated(丢弃,不赞成使用):当我们希望编译器知道某一方法不建议使用时,我们应该使用这个注解。Java在javadoc 中推荐使用该注解,我们应该提供为什么该方法不推荐使用以及替代的方法。

3.@SuppressWarnings(取消警告):这个只是告诉编译器忽略特定的警告信息,像在泛型中使用原生的 数据类型

注解的解析

1,编译时注解
编译时注解是指@Retention值为Class时的注解

  1. 运行时注解解析

@Retention的值为RUNTIME

猜你喜欢

转载自blog.csdn.net/qiaoshi96_bk/article/details/77776568