码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的Annotation (一、系统内建的Annotatiion)

时间:2015-01-19 14:20:14      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

对于Annotation,是Java5以来的新特性,JDK5引入了Metadata(元数据)。所谓元数据就是关于数据的数据。在编程语言上下文中,元数据是添加到程序元素如方法、字段、类和包上的额外信息。 Java中的Annotation就是一种元数据,它提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误。一个Annotation对代码的执行没有什么影响。Annotations使用@annotation的形式应用于代码:类(class),属性(field),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。

Annotation一般作为一种辅助途径,应用在软件框架或工具中,在这些工具类中根据不同的annontation注解信息采取不同的处理过程或改变相应程序元素(类、方法及成员变量等)的行为。在spring 、struts和hibernate中广泛使用了注释,因此有必要了解下java中的 Annotation。

Annotation的核心的工作原理就是借助一个操作类通过反射的方式提取Annotation信息,进行操作。由此可见反射机制在java中用途广泛。

系统内建的 Annotation

主要有三种:

@Override           // 声明某一个方法是用于覆盖父类中的方法,如果不是,就会在编译时报错

@Deprecated       //声明某一个方法 ,某一个类,不建议使用。已经过时。

@SuppressWarnings   //压制一些警告,比如泛型uncheck ,方法unuse

下面请看关于这三种注释的demo

1、@Override 

覆盖父类接口中未实现的抽象方法。

package com.iip;

interface Demo{    
   String getInfo();    
}

class Child implements Demo{
    @Override                  //覆盖父类中的方法
    public String getInfo(){
        return "child";
    }
}
public class AnnotationDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child d = new Child();        
        System.out.println(d.getInfo());
    }

}

2、@Deprecated 

直接在上面代码中@Override下面加入一行@Deprecated

class Child implements Demo{
    @Override
    @Deprecated
    public String getInfo(){
        return "child";
    }
}

通过javac编译就会发现  

技术分享

技术分享

提醒你使用了过时的API。

注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。

加入 -Xlint:deprecation 后再次编译

技术分享

便提示了详细信息。

3、@SuppressWarnings

还是在上述代码中,在main函数上面加入@SuppressWarnings("deprecation")

    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child d = new Child();        
        System.out.println(d.getInfo());
    }

再次编译将不会出现警告

或者也可以这样写 @SuppressWarnings(value={"deprecation"})

value接收的是一个数组,你可以加入多个参数,比如@SuppressWarnings(value={"deprecation","unchecked"})

 

@SuppressWarnings需要加入参数,这些参数都是已经定义好的了,定义的参数有如下几个。

deprecation   使用了过时的类或方法时的警告

unuse    定义的方法没用使用的警告

unchecked  执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型

fallthrough   当 Switch 程序块直接通往下一种情况而没有 Break 时的警告

path   在类路径、源文件路径等中有不存在的路径时的警告

serial 当在可序列化的类上缺少 serialVersionUID 定义时的警告

finally    任何 finally 子句不能正常完成时的警告

all    关于以上所有情况的警告

 

明天将会继续学习如何构造自定义的Annotation。

 

Java中的Annotation (一、系统内建的Annotatiion)

标签:

原文地址:http://www.cnblogs.com/maydayit/p/4233583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!