笨鸟先飞之Java—缠缠绵绵的注解和注释

最后更新于:2022-04-01 19:49:30

在平时的编程中注释一直与我们为伴,但是在Java编程中我们会经常性的使用注解。一字之差,也不知是否会有“失之毫厘差以千里”之说?? ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d8011c2.jpg) 一起来看: ### 一、注解: ❁ 首先来看在ITOO Java中使用的注解: ~~~ @Stateless(name = "SystemStudentIdModuleValueBean") @Remote(SystemStudentIdModuleValueBean.class) @TransactionManagement(TransactionManagementType.CONTAINER) @TransactionAttribute(TransactionAttributeType.REQUIRED) public class SystemStudentIdModuleValueBeanImpl extends BaseBeanImpl implements SystemStudentIdModuleValueBean { } ~~~ 从本质上说,注解就是一种类型!它可以定义、使用,以及包含有自己的属性、方法。 先来对注解这个东西进行一下宏观的了解: 1).注解这个东西主要是给编译器看的,比如最常见的@override表示这个方法重写了父类中的方法; 2).大家共同认可的,就**可以使用一个公式来代替,以节省代码**:这就是注解 3).注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在之后的某个时刻**方便的使用这些数据**(通过解析注解来使用这些数据),常见的作用有如下几种: ○ 生成文档:这是最常见的,也是Java最早提供的注解,常用的有@see,@param,@return等 ○ 跟踪代码依赖性,实现替代配置文件的功能。现在的框架基本上都使用了这种配置里减少配置文件的数量。 ○ 在编译时进行格式检查。如@override放在方法钱前,如果这个方法并不是覆盖的超类的方法,则会在编译时被检查出来。 ❁ 其次,当我们定义了注解,难道直接使用??肯定不是的呗!!     在使用反射之前必须使用import java.lang.reflect.* 来导入和反射相关的类。 α要得到某一个类或接口的注解信息,可以使用如下代码: Annotation annotation = TestAnnotation.class.getAnnotation(MyAnnotation.class); β要得到全部的注解信息可使用如下语句: Annotation[] annotations = TestAnnotation.class.getAnnotations();或 Annotation[] annotations = TestAnnotation.class.getDeclaredAnnotations();   γ要得到其它成员的注解,可先得到这个成员,然后再得到相应的注解。如得到myMethod的注解。 Method method = TestAnnotation.class.getMethod("myMethod", null); Annotation annotation = method.getAnnotation(MyAnnotation.class); PS:要想使用反射得到注解信息,这个注解必须使用@Retention(RetentionPolicy.RUNTIME)进行注解。 所以注解是编程给我们提供的一个桥梁,帮我们摆脱繁杂无序的代码,使我们无限靠近“面向对象”这座城堡,让我们走向编程世界的更远方: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d811fa9.jpg) ### 二、注释 对于每日相伴的注释我们应该很熟悉:主要是帮助我们理解某些代码的或者用来记录一些信息(比如开发时间、开发人员),在myEclipse中: • 单行注释:Ctrl+/   : 在行代码上打上双斜线。 • 多行注释:/**/ • .jsp页面的注释:<-- 这是要被注释掉的内容 --> • .properties页面注释:将键盘切换到英文状态,使用#(或者!)进行注释 所以注释就像是编程向我们伸出的援助之手,随时向我们提供帮助: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d82a0e0.jpg) ### 三、总结: 注解和注释虽然一字之差,却带着我们走入两个不同的世界,一个帮助我们理解(不会对编译器或者程序造成影响),一个通过对配置文件的封装帮助我们高效开发: 注解是J2SE5.0提供的一项非常有趣的功能。它不但有趣,而且还非常有用。如即将出台的EJB3.0规范就是借助于注解实现的。这样将使EJB3.0在实现起来更简单,更人性化。还有Hibernate3.0除了使用传统的方法生成hibernate映射外,也可以使用注解来生成hibernate映射。总之,如果能将注解灵活应用到程序中,将会使你的程序更加简洁和强大。 到这里,"形似"的注解和注释就说完了,如果有什么问题,欢迎大家踊跃拍砖。也期待大家的交流和意见哦: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d8398b9.jpg)
';