• 注解


    @Retention注解

    Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:
    1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
    2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
    3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用.

    @Documented 注解

    Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的.

    但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中.

    @Inherited 注解(待验证)

    这是一个稍微复杂的注解类型. 它指明被注解的类会自动继承. 更具体地说,如果定义注解时使用了 @Inherited 标记,然后用定义的注解来标注另一个父类, 父类又有一个子类(subclass),则父类的所有属性将被继承到它的子类中. 在示例7中,你会看到使用 @Inherited 标签的好处.

    Java注解的示例3

    首先,定义你的注解:

    代码如下:


    @Inherited
    public @interface MyParentObject { 
          boolean isInherited() default true;
          String doSomething() default "Do what?";
    }

    接下来,使用注解标注了一个类:

    代码如下:

    @MyParentObject
    public Class MyChildObject {
    }

    正如你看到的,你不需要在实现类中定义接口方法. 因为使用 @Inherited标记,这些都自动继承了. 如果你使用一种古老的方式定义实现类,会是什么样子呢? 看看下面这张 古老的实现方式吧:

    代码如下:

    public class MyChildObject implements MyParentObject {
       public boolean isInherited() {
          return false;
       }
       public String doSomething() {
          return "";
       }
       public boolean equals(Object obj) {
          return false;
       }
       public int hashCode() {
          return 0;
       }
       public String toString() {
          return "";
       }
       public Class annotationType() {
          return null;
       }
    }

    看到的区别吗? 可以看到,你必须实现父接口的所有方法. 除了isInherited()和从myParentObject doSomething()方法外,你还需要实现 java.lang.Object的 equals(),toString()和hasCode()方法. 还有 java.lang.annotation.Annotation 类的 annotationType()方法. 不管你是不是想要实现这些方法,你必须在继承的对象中包含这些.

    结论

    本文向你展示了如何通过使用JDK5的注解功能使开发更容易. 注解不直接影响程序的语义. 开发和部署工具可以以某种方式阅读这些注解并处理它们,使用包含注解的程序可以替代额外的Java源文件、XML文档或其他古老的构件.  使用注解可以使用更少的代码完成同样的事情,并且有更好的编译时错误检测机制. 注解的目的是花更少的时间在那些死硬无用的细节中,更多地关注业务逻辑规则. 本文是Java注解系列的第一部分. 在第二部分中,你将了解如何使用注解来开发一个简单的Web应用程序. 最后,在第三部分中,你会看到一个包括多个数据库表的复杂示例.

  • 相关阅读:
    如何修改SVN中的用户名和密码
    Telerik_2012_Q3 RadGrid 汉化
    DXperience-12.1.5 官网下载+注册破解+帮助文档
    Telerik_2012_Q3 (已破解)全套下载链接
    WinForm 控件库
    向项目的文件夹中写入数据流
    coolcarousel 图片轮播缩放问题
    IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
    iOS开发
    解析 iOS 动画原理与实现
  • 原文地址:https://www.cnblogs.com/xingzc/p/6266355.html
Copyright © 2020-2023  润新知