在平时的编程中注释一直与我们为伴,但是在Java编程中我们会经常性的使用注解。一字之差,也不知是否会有“失之毫厘差以千里”之说??
![](https://box.kancloud.cn/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://box.kancloud.cn/2016-03-10_56e132d811fa9.jpg)
### 二、注释
对于每日相伴的注释我们应该很熟悉:主要是帮助我们理解某些代码的或者用来记录一些信息(比如开发时间、开发人员),在myEclipse中:
• 单行注释:Ctrl+/ : 在行代码上打上双斜线。
• 多行注释:/**/
• .jsp页面的注释:<-- 这是要被注释掉的内容 -->
• .properties页面注释:将键盘切换到英文状态,使用#(或者!)进行注释
所以注释就像是编程向我们伸出的援助之手,随时向我们提供帮助:
![](https://box.kancloud.cn/2016-03-10_56e132d82a0e0.jpg)
### 三、总结:
注解和注释虽然一字之差,却带着我们走入两个不同的世界,一个帮助我们理解(不会对编译器或者程序造成影响),一个通过对配置文件的封装帮助我们高效开发:
注解是J2SE5.0提供的一项非常有趣的功能。它不但有趣,而且还非常有用。如即将出台的EJB3.0规范就是借助于注解实现的。这样将使EJB3.0在实现起来更简单,更人性化。还有Hibernate3.0除了使用传统的方法生成hibernate映射外,也可以使用注解来生成hibernate映射。总之,如果能将注解灵活应用到程序中,将会使你的程序更加简洁和强大。
到这里,"形似"的注解和注释就说完了,如果有什么问题,欢迎大家踊跃拍砖。也期待大家的交流和意见哦:
![](https://box.kancloud.cn/2016-03-10_56e132d8398b9.jpg)