zoukankan      html  css  js  c++  java
  • 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,然后如果有就怎么怎么样的代码



  • 相关阅读:
    ubuntu 9.04更新源
    想学一下asp.net,跟着书本做了个bbs
    [转]ubuntu系统中遇到的一些问题及解决
    第一篇,打个招呼
    人际交往的书籍推荐
    程序员的五层境界,你在哪一层?
    HTTP报文之"请求报文"和"响应报文"详解
    如何提高你的工作效率?
    面对焦虑我们怎么办 ?
    CEO要看的书籍推荐
  • 原文地址:https://www.cnblogs.com/liufei1983/p/8320287.html
Copyright © 2011-2022 走看看