黑马程序员技术交流社区

标题: Annotation不是很懂,不知道用来干什么的 [打印本页]

作者: 王士铭    时间: 2011-8-4 02:38
标题: Annotation不是很懂,不知道用来干什么的
今天看张老师的视频说到Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.可是对于Annotation实在是不知道能有什么用处,感觉不是很重要我在在编码的过程中就只有@Override能派上用场,
谁能给我说一下Annotation的好处
特别是老师说的那句典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。如果人家给我们一些class文件里面有些注释, 然后通过反射去获取注释 以决定怎么去运行类 感觉好抽象,这个人家给这个我们class文件的时候应该连帮助文档也给我们了帮助文档应该有挺多的注释的,可是我们要通过反射方法这么麻烦的方法得到注释
作者: 匿名    时间: 2011-8-4 09:27
从JDK1.5开始,Java中增加了对元数据(MetaData)的支持,也就是Annotation(注释),这种Annotation与Java程序中的单行注释和文本注释是有一定区别,也有一定联系的。其实,我们现在说的Annotation是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过Annotation,程序开发人员可以在不改变原来逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具,开发工具和部署工具可通过这些补充信息进行验正或者部署。
  Annotation提供了一条为程序元素设置元素的方法,从某些方面来看,Annotation就象修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被存在Annotation的"name=value"对中。
注意
    Annotation是的一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来取得注释里的元数据。我们需要注意使用Annotation的地方,有的Annotation指的是java.lang.Annotation接口,有的指的是注释本身.
  
  Annotation能被用来为程序元素(类,方法,成员变量)设置元数据。值得指出的是:Annotation不能影响程序代码的执行,无论增加,删除Annotation,代码都始终如一地执行。如果希望让程序中的Annotation能在运行时起一定的作用,只有通过某种配套的工具对Annotation中的信息进行访问和处理,访问和处理Annotation的工具统称为APT(Annotation Processing Tool).
作者: 匿名    时间: 2011-8-4 10:33
注解是众多引入到java SE5中的重要语言变化之一。他们可以提供用来完整地描述程序所需的信息,而这些信息是无法用java来表达的。因此,注解使得我们能够以将由编译器来测试和验证的格式,存储有关程序的额外信息。注解可以用来生成描述符文件,甚至或是新的类定义,并且有助于减轻编写样板代码的负担。通过使用注解,我们可以将这些元数据保存在java源代码中,并利用annotation API为自己的注解构造处理工具,同时,注解的优点还包括:更加干净易读的代码以及编译器类型检查等。虽然Java SE5预先定义了一些元数据,但一般来说,主要还是需要程序员自己添加新的注解,并且按自己的方式使用它们。


Annotation 的优点。
  1、保存在 class 文件中,降低维护成本。
  2、无需工具支持,无需解析。
  3、编译期即可验证正确性,查错变得容易。
  4、提升开发效率。

Annotation 也不是万能的,它也有很多缺点。
  1、若要对配置项进行修改,不得不修改 Java 文件,重新编译打包应用。
  2、配置项编码在 Java 文件中,可扩展性差。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2