• java注解的基本知识


    1: 注解:Annotation是一种应用于类、方法、参数、变量、构造器及包生命中的特殊修饰符,是一种由JSR-175标准选择用来描述代码的元数据。

    Java中如下的4种注解,专门负责新注解的创建:

      @Target - 注解应用于什么地方如果不明确指出,则改注解可以放在任何地方。

      @Inherited - 是否允许子类继承该注解。

      @Retention - 什么时候使用该注解定义该注解的生命周期;RetentionPolicy.CLASS表示在类加载的时候丢弃,在字节码文件的处理中有用,注解默认都使用这种方                                 式。RetentionPolicy.RUNTIME表示始终不对丢弃,运行期也保留该注释,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种                               方式,比如spring的一些注解。

      @Documented - 注解是否包含在JavaDoc中一个简单的标记注解,标识是否将注解信息添加在java文档中

    java内置的常用注解:

      @Override,表示当前的方法定义将覆盖超类中的方法。

      @Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。

      @SuppressWarnings,关闭不当编译器警告信息。

    自定义注解:   

    1 @Target(ElementType.METHOD)
    2 @Retention(RetentionPolicy.RUNTIME)
    3 public @interface Test {
    4  
    5 }

    除了@符号,注解很像是一个接口。定义注解的时候需要用到元注解,上面用到了@Target和@RetentionPolicy。

    在注解中一般会有一些元素以表示某些值。注解的元素看起来就像接口的方法,唯一的区别在于可以为其制定默认值。没有元素的注解称为标记注解,上面的@Test就是一个标记注解。 

          在注解中一般会有一些元素以表示某些值。注解的元素看起来就像接口的方法,唯一的区别在于可以为其制定默认值。没有元素的注解称为标记注解,上面的@Test就是一个标记注解。

      注解的可用的类型包括以下几种:所有基本类型、String、Class、enum、Annotation、以上类型的数组形式。元素不能有不确定的值,即要么有默认值,要么在使用注解的时候提供元素的值。而且元素不能使用null作为默认值。注解在只有一个元素且该元素的名称是value的情况下,在使用注解的时候可以省略“value=”,直接写需要的值即可。 

            使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器

            从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。

      首先最重要的一点是:Annotation是被动的元数据,永远不会有主动行为

      但凡Annotation起作用的场合都是有一个执行机制/调用者通过反射获得了这个元数据然后根据它采取行动。在你的例子里这个执行机制就是测试框架JUnit。你去 慢慢翻JUnit的代码一定能找到它去查询被调用的class有没有某某Annotation,然后如果有就怎么怎么样的代码



  • 相关阅读:
    【Codeforces 923A】Primal Sport
    【Codeforces 924C】Riverside Curio
    【Codeforces 682C】Alyona and the Tree
    【Codeforces 1118D1】Coffee and Coursework (Easy version)
    【Codeforces 493C】Vasya and Basketball
    【Codeforces 598D】Igor In the Museum
    js 时间格式化
    C#自定义规则对比两个集合的对象是否相等
    VUE的组件DEMO
    js 去掉指定符号的字符串做法
  • 原文地址:https://www.cnblogs.com/liufei1983/p/8320287.html
Copyright © 2020-2023  润新知