Java注释

2021-02-09 07:19

阅读:618

标签:col   检查   lang   属性   ons   none   接口   ota   提取   

概念:

  • JDK1.5之后的特性
  • 说明程序的
  • 使用注解:@注解名称

作用分类:

  • 编写文档:通过代码里标识的注解生成的文档,生成文档doc
  • 代码分析:通过代码里标识的注解对代码进行分析,使用反射
  • 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查,Override
  • 值得注意的是,注解不是代码本身的一部分,对代码的运行效果没有直接影响

JDK中的预定义的一些注解

  • @Override:检测被该注解标注的方法是否是继承自父类(接口)的
  • @Deprecated:该注解的标注的内容,表示已过时的
  • @SupperssWarnings:压制警告,一般传递参数”all”

自定义注解

  • 格式:
    • 元注解
    • public @interface 注解名称{属性列表}
  • 本质:注解本质上就是一个接口,该接口默认继承Annotation接口
    • public interface MyAnno extends java.lang.annotation.Annotation {}
  • 属性:接口中可以抽象方法
    • 属性的返回值类型:基本数据类型、String、枚举、注解、以上类型的数组
    • 定义了属性,在使用时需要给属性赋值
      • 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时可以不进行赋值
      • 如果一个属性需要赋值,并且属性的名称时value,则value可以省略,直接定义值
      • 数组赋值时,值使用{}包裹,如果数组中只有一个值,则{}可以省略
  • 元注解:用于描述注解的注解
    • @Target:描述注解能够作用的位置
      • ElementType取值:
        • TYPE:可以作用于类上
        • METHOD:可以作用于方法上
        • FIELD:可以作用于成员变量上
    • @Retention:描述注解能够保留的阶段(source,class,runtime)
      • @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
    • @Documented:描述注解是否被抽取到API文档中
    • @Inherited:描述注解是否被子类继承

注解的提取

注解通过反射提取,首先可以通过Class对象的isAnnotationPresent()方法判断它是否应用了某个注解

public boolean isAnnotationPresent(Class extends Annotation> annotationClass) {}

然后通过getAnnotation()方法来获取Annotation对象

public extends Annotation> A getAnnotation(Class annotationClass) {}

或者是getAnnotation()方法

public Annotation[] getAnnotations() {}

前一种方法返回指定类型的注解,后一种方法返回这个元素上全部注解

@TestAnnotation()
public class Test {
    public static void main(String[] args) {
        boolean hasAnnotation = Test.class.isAnnotationPresent(TestAnnotation.class);
        if ( hasAnnotation ) {
            TestAnnotation testAnnotation = Test.class.getAnnotation(TestAnnotation.class);
            System.out.println("id:"+testAnnotation.id());
            System.out.println("msg:"+testAnnotation.msg());
        }
    }
}

 

详细介绍可以参考:https://zhuanlan.zhihu.com/p/37701743

Java注释

标签:col   检查   lang   属性   ons   none   接口   ota   提取   

原文地址:https://www.cnblogs.com/codingLiu/p/12751244.html


评论


亲,登录后才可以留言!