Java常用的三个Annotation

Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 
annotation提供可一条为程序元素设置元数据的方法,从某种方面来看,annotation就像修饰一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量。 
 
annotation必须使用工具来处理,工具负责提取annotation里包含的元数据,工具还会根据这些元数据增加额外的功能。java提供的三个基本annotation的用法;使用annotation时要在其前面增加@符号,并把该annotation当成一个修饰使用,用于修饰它支持的程序元素。 
三个基本的annotation如下: 
 
1.@Override 
2.@Deprecated 
3.@suppressWamings 
 
1.限定重写父类方法 @Override 
因为@Override的作用是告诉编译器检查这个方法,并从父类查找是否包含一个被该方法重写的方法,否则就编译出错。这个annotation主要是帮助我们避免一些低级错误。 
@Override只能用于作用于方法,不能用于作用于其他程序元素。如下程序: 
Java代码:  
  1. public class Fruit {  
  2.       
  3.     public void foo(){  
  4.         System.out.println("水果的info方法...");  
  5.     }  
  6. }  
  7.   
  8. class Apple extends Fruit{  
  9.       
  10.     @Override  
  11.     public void foo() {  
  12.         // TODO Auto-generated method stub  
  13.         super.foo();  
  14.     }  
  15. }  
 
2.标识已过时 @Deprecated 
@Override用于表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器就会给出警告。如下面程序: 
Java代码:  
  1. public class Fruit {  
  2.       
  3.     @Deprecated  
  4.     public void foo(){  
  5.         System.out.println("水果的info方法...");  
  6.     }  
  7. }  
  8.   
  9. class Apple extends Fruit{  
  10.       
  11.     @Override  
  12.     public void foo() {  
  13.         // TODO Auto-generated method stub  
  14.         super.foo();  
  15.     }  
  16. }  
上面程序中粗体字代码使用了apple类的info方法,而apple类中定义info方法时使用了@Deprecated,表名该方法已过时。所以程序中粗体代码将会引起编译器的警告。 
@Deprecated annotation的作用与文档注释中的@deprecated标记的作用基本相同,但他们的用法不同,前者是JDK1.5才支持的注解,无须放在文档注释语法(/**...*/部分)中,而是直接用于修饰程序中的程序单元,如方法、接口等。 
 
3.抑制编译器警告:@suppressWamings 
@suppressWamings指示被annotation标识的程序元素(以及在该程序元素中的所有子元素)取消显示指定的编译器警告。@suppressWamings会一直作用于该程序元素的所有子元素,例如使用@suppressWamings标识一个类来取消显示某个编译器警告,同时又标识该类里某个方法取消显示另一个编译器的警告,那么将在此方法中同时取消显示两个编译器警告。 
通常情况下,如果程序中没有泛型限制的集合将会引起编译器警告,为了避免这种编译器警告,可以使用 
Java代码: 
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. @SuppressWarnings(value="unchecked")  
  4. public class SuppressWamingsTest {  
  5.       
  6.     public static void main(String[] args) {  
  7.         List list = new ArrayList();  
  8.     }  
  9. }  
程序中粗体字代码使用@suppressWamings来关闭SuppressWamingsTest里的所有编译器警告,编译上面程序时将不会看到任何编译器警告。如果删除程序中粗体字代码,将会在程序中看到编译器警告。
原文链接:http://www.software8.co/wzjs/java/2896.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值