HappyLei

记录点点滴滴的进步

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

先从最简单的注解说起:@override最常见的注解,就是表明对父类方法的覆盖。如果不用@override注解会有什么影响那?如下面代码:

Class A{
    Public void getService();
}
Class B extends A{
    Public void getSevice();
}

 

编译不会有任何问题,我们的目的是要覆盖A类的getService()方法,而事实上因为“笔误”定义了一个新的方法getSevice(),如果仍然调用B的getService()方法,后果可能就不是我们预期的结果了。但是如果我们使用@override注解,就表明我们现在要覆盖父类的方法,如果方法名匹配不到,编译器就会发出警告。

这样的好处在于使编译器自动的帮助我们检查源码。事倍功半,何乐不用?

其他类似的还有:@Deprecated,@SuppressWarnings

除了这些编译检查之外,注解还可以帮助我们生成文档,跟踪代码依赖,描述类相关的信息等。

可以看出注解与注释的区别:注解可能影响编译的,而注释对代码没有任何影响。我们可以定义注解的生命周期(@Retention)

注解包java.lang.annotation包括四个元注解:@Documented @Inherited @Retention @Target,元注释是可以用于定义注解的注解。

Documented帮助我们生成文档,Inherited继承注解,Retention定义注解的生命周期,Target定义注解应用的对象。

Java注解:表明了一种配置信息

从某种角度来说,可以把注解看成是一个XML元素,该元素可以有不同的预定义的属性。而属性的值是可以在声明该元素的时候自行指定的。在代码中使用注解,就相当于把一部分元数据从XML文件移到了代码本身之中,在一个地方管理和维护。

注解的处理,对于运行时的注解,可以通过Java的反射机制读取注解的参数,根据注解参数做出相应的处理,这类似与xml配置文件,Spring也通过自定义注解来减少配置文件。

注解的解析也是通过Java的反射机制实现的。

posted on 2014-06-21 13:04  HappyLei  阅读(182)  评论(0编辑  收藏  举报