下面哪些annotation是jdk中的metjava annotationn

博客分类:
使用JAXB2来实现对象与XML之间的映射 JAXB是Java Architecture for XML Binding的缩写,先来说一说这个是用来做什么的吧。这个工具就像我们生活中神奇的温度。它可以把水把变成冰,也可以把冰变成水。而这个工具就像温度一样的神奇可以把java的对象和xml文件进行互转。你很聪明,也就是说可把xml文件转为java对象,也可以把java对象转为xml文件。一种对象与关系数据库之间的映射称为ORM,聪明的你就会想到可以把对象和xml之间的映射称为OXM(Object XML Mapping). Xml文件在j2ee开发中使用得就每天要吃那样的频繁。Sun还老套把这个工具放到了j2se中去了。这里说到的是2.0那你一定会也想到有一个1.0吧。那就说一说2.0与1.0的区别吧。很对不仅有一字之差1和2之差。还有2.0加入了一些功能。JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。闲话不多说太多了,说多了你就会觉得没完没了
好开始看一看下面这个实例吧。
* @param args
* @throws Exception
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
JAXBContext context = JAXBContext.newInstance(Student.class);
//下面代码演示将对象转变为
Marshaller m = context.createMarshaller();
Address address = new Address("China","Beijing","Beijing","HuiLongGuan West","");
Student p = new Student(200800,"leiwuluan",address,95.5,1);
FileWriter fw = new FileWriter("Student.xml");
m.marshal(p,fw);
//下面代码演示将上面生成的转换为对象
FileReader fr = new FileReader("person.xml");
Unmarshaller um = context.createUnmarshaller();
Student p2 = (Student)um.unmarshal(fr);
System.out.println("Country:"+p2.getAddress().getCountry());
表示是一个根元素
@javax.xml.bind.annotation.XmlElement
Integer studentId; //studentId将作为的子元素
@javax.xml.bind.annotation.XmlAttribute
String studentN //studentName将作为的的一个属性
@javax.xml.bind.annotation.XmlElement
A //address将作为的子元素
@javax.xml.bind.annotation.XmlElement
D //gender将作为的子元素
@javax.xml.bind.annotation.XmlElement
I //job将作为的子元素
public Student(){
public Student(Integer studentId, String studentName, Address address,
Double score, Integer grade) {
this.studentId = studentId;
this.studentName = studentN
this.address =
this.score =
this.grade =
public Address getAddress() {
@javax.xml.bind.annotation.XmlAttribute
@javax.xml.bind.annotation.XmlElement
@javax.xml.bind.annotation.XmlElement
@javax.xml.bind.annotation.XmlElement
S //由于没有添加所以该元素不会出现在输出的中
public Address() {
public Address(String country, String state, String city, String street, String zipcode) {
this.country =
this.state =
this.city =
this.street =
this.zipcode =
public String getCountry() {
都说将对象转为文件了。所以你就可以得到一个名为文件了。里面的内容不用猜的跟平常文件一样的。就像下面一模一样的。
&?xml version="1.0" encoding="UTF-8" standalone="yes"?&
&student studentName="leiwuluan"&
&studentId&200800&/studentId&
&address country="China"&
&state&Beijing&/state&
&city&Beijing&/city&
&street&HuiLongGuan West&/street&
&/address&
&score&95.5&/score&
&grade&1&/grade&
&/student&
做到这里聪明的你也会了吧。你一定想问还有没有别的东西也可以实现这个呢。
你不问我也会对你说还有,真的有。这只是其中的一种而以。
这两个也可以。
手累了不多写了。认真看一遍就会了。不要跳页去看,如果这样你永远也不会。
看书时,你说你看不懂。其实你不是看不懂,而是你没有用心看。而是上页没有看就看下一而,记住看书不是在跳台阶,可以隔着跳。。。不说多了。
浏览: 581971 次
来自: 北京
你好,请问您上传的那个APK为什么每次只能识别一次,不能连续识 ...
问一下 你的这个People 类 是自定义的还是android ...
对于刚接触的我是一个很详细的教程,太感谢了
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Annotation 注解初识 之 JDK的三大注解
注解,在java 中可能是给编译器用的, 可能是给运行时候环境用的,可能只是在class字节码里的一个标识。不过一般意义上来说,注解很多时候是可以替代XML文件,完成其所有工作。也因此,在一定程度上,注解可以理解成配置信息吧。
在java 环境中最经常遇到的就是@override 了。
当实现方法重载的时候的,重载的方法前面就会出现这个关键字。这个关键字意味着,标识出该方法是将会覆盖父类的同名方法。 这也是最经常看到的注解。 同样JDK还为我们提供了另外两个常用的注解,一个是@Deprecated:说明过时了。另一个是@SuppressWarnings:抑制警告
例子说明:
当用Deprecated修饰在一个方法头部的时候,表明这个方法是过时的。
@Deprecated
private void Test1() {
System.out.println("Test1 world");
在使用该方法的时候,就会发现在方法的名称上面被划了横线,就表明,现在有更好的方法取代了这个方法,因此这个方法是过时的。
SuppressWarnings 是抑制警告的意思,在java中很多地方如果出现,变量定义了没被使用, 使用集合的时候 ,没用泛型约束。 在ecplise编译环境中就会划出黄色的下划线 显示出来,并在文件的角落,显示感叹号。
为了不让编译器报出这些警告,可以使用这个关键字来抑制警告。抑制警告,还可以抑制一个类别,或者全部。
@SuppressWarnings("抑制的警告的具体类型"):
unused:变量未使用
deprecation:使用了不赞成使用的类或方法时的警告
unchecked:执行了未检查的转换时的警告。比如没有使用泛型
falthrough:当switch程序块直接通往下一种情况而没有break时的警告
path:在类路径、源文件路径等中有不存在的路径时的警告。
serial:当在可序列化雷尚缺少serialVersionUID定义时的警告
finally:任何finally子句不能正常完成时的警告。
all:关于以上所有情况的警告。
@SuppressWarnings("unchecked")
//对其执行转换类型的检查
List li=new ArrayList();
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.043 (s). 12 q(s)博客分类:
背景知识:
&&&&&& 从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范。注释是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")。注释可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class文件等产生任何影响,也不会对它们的执行产生任何影响。
&&&& 元数据的作用,大致可分为三种:编写文档,通过代码里标识的元数据生成文档;代码分析,通过代码里标识的元数据对代码进行分析;编译检查,通过代码里标识的元数据让编译器能实现基本的编译检查。
JDK5内置的基本注释
&&& JDK5内置了一些常用的注释,可以在编译时帮我们捕获部分编译错误,及提示信息,下面介绍下这些注释的用法:
1、@Override定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;代码如下:
public class OverrideDemo {
public String tostring() {
return super.toString();
在编译时,会提示以下错误信息:
引用OverrideTest.java:4: 方法未覆盖其父类的方法
&&&&&&& @Override
&&&&&&&& ^1 错误
2、@Deprecated定义在java.lang.Deprecated中,此注释可用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。使用@Deprecated的示例代码如下:
public class DeprecatedDemo {
public static void main(String[] args) {
DeprecatedClass.DeprecatedMethod();
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
在编译时,会得到以下提示信息:
引用注意:DeprecatedDemo.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
如果在编译时添加-Xlint:deprecation参数,我们能更清楚的看到该警告的详细信息,如下:
引用DeprecatedDemo.java:6: 警告:[deprecation] SomeClass 中的 DeprecatedMethod() 已过时
&&&&&&&&&&&&&&& SomeClass.DeprecatedMethod();
&&&&&&&&&&&&&&&&&&&&&&&& ^1 警告
要注意@Deprecated与@deprecated的区别,@deprecated是为了生成文档的需要,例如:
class DeprecatedClass {
* @deprecated
此方法已过时,不建议使用
@Deprecated
public static void DeprecatedMethod() {
3、@SuppressWarnings定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:
通过上面的表格,你应该了解到每个参数的用意了,下面我就以一个常用的参数unchecked为例,为你展示如何使用@SuppressWarnings注释,示例代码如下:
import java.util.L
import java.util.ArrayL
public class SuppressWarningsDemo {
public static List cache = new ArrayList();
//@SuppressWarnings(value = "unchecked")
public void add(String data) {
cache.add(data);
}
当我们不使用@SuppressWarnings注释时,编译器就会有如下提示:
引用注意:SuppressWarningsDemo.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
下面我们去掉@SuppressWarnings(value="unchecked")这一行的注释符“//”,它会屏蔽编译时的警告信息,这也就是它所要达到的目的。
&&&&& 另外,由于@SuppressWarnings注释只有一个参数,并且参数名为value,所以我们可以将上面一句注释简写为
@SuppressWarnings("unchecked");
同时参数value可以取多个值如:
@SuppressWarnings(value={"unchecked", "deprecation"})
或@SuppressWarnings({"unchecked", "deprecation"})。
自定义Annotation注释
1、注释annotation与接口的异同:
因为annotation类型是一个非凡的接口,所以它与接口之间存在着某些差异:
A. Annotation类型使用关键字@interface而不是interface,这个关键字声明隐含了一个信息,它是继承了java.lang.annotation.Annotation接口,并非声明了一个interface。
B. Annotation类型的方法定义是独特的、受限制的,方法必须声明为无参数、无异常抛出的。这些方法定义了annotation的成员:方法名成为了成员名,而方法返回值成为了成员的类型。而方法返回值类型必须为primitive类型、Class类型、枚举类型、annotation类型或者由前面类型之一作为元素的一维数组。方法的后面可以使用default和一个默认数值来声明成员的默认值,null不能作为成员默认值,这与我们在非annotation类型中定义方法有很大不同。
C. Annotation类型又与接口有着近似之处,它们可以定义常量、静态成员类型(比如枚举类型定义)。Annotation类型也可以如接口一般被实现或者继承。
2、自定义注释的实例:
下面,我们将看到如何定义annotation类型的例子。它展示了annotation类型声明以及@interface与interface之间的不同:
import java.lang.annotation.*;
* 使用annotation来描述那些被标注的成员是不稳定的,需要更改
public @interface Unstable {
下面的另一个例子只定义了一个成员。并通过将这个成员命名为value,使我们可以方便的使用这种annotation的快捷声明方式:
* 使用Author这个annotation定义在程序中指出代码的作者
public @interface Author {
/** 返回作者名 */
String value();
以下的例子更加复杂。Reviews annotation类型只有一个成员,但是这个成员的类型是复杂的:由Review annotation组成的数组。Review annotation类型有3个成员:枚举类型成员grade、表示Review名称的字符串类型成员Reviewer、具有默认值的字符串类型成员 Comment。
* Reviews annotation类型只有一个成员,
* 但是这个成员的类型是复杂的:由Review annotation组成的数组
@Retention(RetentionPolicy.RUNTIME)
public @interface Reviews {
Review[] value();
* Review annotation类型有3个成员:
* 枚举类型成员grade、
* 表示Review名称的字符串类型成员Reviewer、
* 具有默认值的字符串类型成员Comment。
public @interface Review {
// 内嵌的枚举类型
public static enum Grade { EXCELLENT, SATISFACTORY, UNSATISFACTORY };
// 下面的方法定义了annotation的成员
Grade grade();
String reviewer();
String comment() default "";
最后,我们来定义一个annotation方法用于罗列出类运行中所有的unchecked异常。这个 annotation类型将一个数组作为了唯一的成员。数组中的每个元素都是异常类。为了加强对未检查的异常(此类异常都是在运行时抛出)进行报告,我们可以在代码中对异常的类型进行限制:
public @interface UncheckedExceptions {
Class[] value();
Meta-Annotation类型:
Annotation 类型可以被它们自己所标注。Java5.0定义了4个标准的meta-annotation类型,分别是:Target、Retention、Documented、Inherited,它们被用来提供对其它annotation类型作说明。 这些类型和它们所支持的类在java.lang.annotation包中可以找到。
@Target的用法:指示注释类型所适用的程序元素的种类。如果注释类型声明中不存在 Target 元注释,则声明的类型可以用在任一程序元素上。如果存在这样的元注释,则编译器强制实施指定的使用限制。 例如,以下这个注释只能用来声明方法:
@Target(ElementType.METHOD)
public @interface MyAnnotation {
java.lang.annotation.ElementType是一个枚举类型,它具有以下定义:
@Retention的用法:指示注释类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS,例如:
@ Retention(RetentionPolicy.CLASS)
public @interface MyAnnotation {
}
java.lang.annotation.RetentionPolicy是一个枚举类型,它具有以下定义:
@Documented的用法:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。应使用此类型来注释这些类型的声明:其注释会影响由其客户端注释的元素的使用。如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分。Documented是一个没有成员的注释。
@Inherited的用法:指示注释类型自动被子类继承。 Inherited也是一个没有成员的注释。
注意,如果使用@Inherited注释类以外的任何事物都是无效的。还要注意,此元注释仅对从超类继承注释有效;对已实现接口的注释无效。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& [本编完]
论坛回复 /
(0 / 5277)
linliangyi2007
浏览: 906352 次
来自: 福州
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
LZ,public boolean createUser(LD ...
Hibernate: update T_GX_TEST set ...
感谢大神,在安卓里面调用成功了。
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'【图文】Core Java系列讲座之Annotation_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Core Java系列讲座之Annotation
&&java 注解
阅读已结束,下载本文到电脑
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。...
深入理解Java:注解(Annotation)基本概念
原文:http://www.cnblogs.com/peida/archive//3036035.html
什么是注解(Annotation):
  Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和
方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对
象来获取注解里面的元数据。
  Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译
时检查。从某些方面看,Annotation就像修饰符一样被使用,并应用于包、类 型、构造方法、方法、成员变量、参
数、本地变量的声明中。这些信息被存储在Annotation的“name=value”结构对中。
  Annotation的成员在Annotation类型中以无参数的方法的形式被声明。其方法名和返回值定义了该成员的名字
和类型。在此有一个特定的默认语法:允许声明任何Annotation成员的默认值:一个Annotation可以将
name=value对作为没有定义默认值的Annotation成员的值,当然也可以使用name=value对来覆盖其它成员默认
值。这一点有些近似类的继承特性,父类的构造函数可以作为子类的默认构造函数,但是也可以被子类覆盖。
  Annotation能被用来为某个程序元素(类、方法、成员变量等)关联任何的信息。需要注意的是,这里存在着一
个基本的规则:Annotation不能影响程序代码的执行,无论增加、删除 Annotation,代码都始终如一的执行。另
外,尽管一些Annotation通过Java的反射API方法在运行时被访问,而Java语言解释器在工作时忽略了这些
Annotation。正是由于Java虚拟机忽略了Annotation,导致了Annotation类型在代码中是“不起作用”的; 只有
通过某种配套的工具才会对annotation类型中的信息进行访问和处理。本文中将涵盖标准的Annotation和meta-
Annotation类型,陪伴这些Annotation类型的工具是Java编译器(当然要以某种特殊的方式处理它们)。
什么是metadata(元数据):
  元数据从metadata一词译来,就是“关于数据的数据”的意思。
  元数据的功能作用有很多,比如:你可能用过Javadoc的注释自动生成文档。这就是元数据功能的一种。总的来
说,元数据可以用来创建文档,跟踪代码的依赖性,执行编译时格式检查,代替已有的配置文件。如果要对于元数据
的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:
    1. 编写文档:通过代码里标识的元数据生成文档
    2. 代码分析:通过代码里标识的元数据对代码进行分析
    3. 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查
  在Java中元数据以标签的形式存在于Java代码中,元数据标签的存在并不影响程序代码的编译和执行,它只是被
用来生成其它的文件或针在运行时知道被运行代码的描述信息。
  综上所述:
    第一,元数据以标签的形式存在于Java代码中。
    第二,元数据描述的信息是类型安全的,即元数据内部的字段都是有明确类型的。
    第三,元数据需要编译器之外的工具额外的处理用来生成其它的程序部件。
    第四,元数据可以只存在于Java源代码级别,也可以存在于编译之后的Class文件内部。
Annotation和Annotation类型:
  Annotation:
  Annotation使用了在java5.0所带来的新语法,它的行为十分类似public、final这样的修饰符。每个Annotation
具有一个名字和成员个数&=0。每个Annotation的成员具有被称为name=value对的名字和值(就像javabean一
样),name=value装载了Annotation的信息。
  Annotation类型:
  Annotation类型定义了Annotation的名字、类型、成员默认值。一个Annotation类型可以说是一个特殊的Java
接口,它的成员变量是受限制的,而声明Annotation类型时需要使用新语法。当我们通过Java反射API访问
Annotation时,返回值将是一个实现了该 annotation类型接口的对象,通过访问这个对象我们能方便的访问到其
Annotation成员。后面的章节将提到在Java5.0的 java.lang包里包含的3个标准Annotation类型。
注解的分类:
  根据注解参数的个数,我们可以将注解分为三类:
    1.标记注解:一个没有成员定义的Annotation类型被称为标记注解。这种Annotation类型仅使用自身的存在
与否来为我们提供信息。比如后面的系统注解@O
    2.单值注解
    3.完整注解  
  根据注解使用方法和用途,我们可以将Annotation分为三类:
    1.JDK内置系统注解
    2.元注解
    3.自定义注解
系统内置标准注解:
  注解的语法比较简单,除了@符号的使用外,他基本与Java固有的语法一致,JavaSE中内置三个标准注解,定义
在java.lang中:
    @Override:用于修饰此方法覆盖了父类的方法;
    @Deprecated:用于修饰已经过时的方法;
    @SuppressWarnnings:用于通知java编译器禁止特定的编译警告。
  下面我们依次看看三个内置标准注解的作用和使用场景。
@Override,限定重写父类方法:
  @Override 是一个标记注解类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言
的作用。如果我们使用了这种Annotation在一个没有覆盖父类方法的方法时,java编译器将以一个编译错误来警示。
这个annotaton常常在我们试图覆盖父类方法而确又写错了方法名时发挥威力。使用方法极其简单:在使用此
annotation时只要在被修饰的方法前面加上@Override即可。下面的代码是一个使用@Override修饰一个企图重载
父类的displayName()方法,而又存在拼写错误的实例:
public class Fruit {
public void displayName(){
System.out.println("水果的名字是:*****");
class Orange extends Fruit {
public void displayName(){
System.out.println("水果的名字是:桔子");
class Apple extends Fruit {
public void displayname(){
System.out.println("水果的名字是:苹果");
Orange 类编译不会有任何问题,Apple 类在编译的时候会提示相应的错误。@Override注解只能用于方法,不能用于其他程
@Deprecated,标记已过时:
  同样Deprecated也是一个标记注解。当一个类型或者类型成员使用@Deprecated修饰的话,编译器将不鼓励使
用这个被标注的程序元素。而且这种修饰具有一定的 “延续性”:如果我们在代码中通过继承或者覆盖的方式使用了
这个过时的类型或者成员,虽然继承或者覆盖后的类型或者成员并不是被声明为 @Deprecated,但编译器仍然要报
  值得注意,@Deprecated这个Annotation类型和javadoc中的 @deprecated这个tag是有区别的:前者是Java
编译器识别的,而后者是被javadoc工具所识别用来生成文档(包含程序成员为什么已经过 时、它应当如何被禁止或
者替代的描述)。
  在Java5.0,Java编译器仍然象其从前版本那样寻找@deprecated这个javadoc tag,并使用它们产生警告信息
。但是这种状况将在后续版本中改变,我们应在现在就开始使用@Deprecated来修饰过时的方法而不是
@deprecated javadoc tag。
  下面一段程序中使用了@Deprecated注解标示方法过期,同时在方法注释中用@deprecated tag 标示该方法已
经过时,代码如下:
class AppleService {
public void displayName(){
System.out.println("水果的名字是:苹果");
* @deprecated 该方法已经过期,不推荐使用
@Deprecated
public void showTaste(){
System.out.println("水果的苹果的口感是:脆甜");
public void showTaste(int typeId){
if(typeId==1){
System.out.println("水果的苹果的口感是:酸涩");
else if(typeId==2){
System.out.println("水果的苹果的口感是:绵甜");
System.out.println("水果的苹果的口感是:脆甜");
public class FruitRun {
* @param args
public static void main(String[] args) {
Apple apple=new Apple();
apple.displayName();
AppleService appleService=new AppleService();
appleService.showTaste();
appleService.showTaste(0);
appleService.showTaste(2);
  AppleService类的showTaste() 方法被@Deprecated标注为过时方法,在FruitRun类中使用的时候,编译器会
给出该方法已过期,不推荐使用的提示。
SuppressWarnnings,抑制编译器警告:
  @SuppressWarnings 被用于有选择的关闭编译器对类、方法、成员变量、变量初始化的警告。在Java5.0,sun
提供的javac编译器为我们提供了-Xlint选项来使编译器对合法的程序代码提出警告,此种警告从某种程度上代表了程
序错误。例如当我们使用一个generic collection类而又没有提供它的类型时,编译器将提示出"unchecked
warning"的警告。通常当这种情况发生时,我们就需要查找引起警告的代码。如果它真的表示错误,我们就需要纠
正它。例如如果警告信息表明我们代码中的switch语句没有覆盖所有可能的case,那么我们就应增加一个默认的case
来避免这种警告。
  有时我们无法避免这种警告,例如,我们使用必须和非generic的旧代码交互的generic collection类时,我们不
能避免这个unchecked warning。此时@SuppressWarning就要派上用场了,在调用的方法前增加
@SuppressWarnings修饰,告诉编译器停止对此方法的警告。
  SuppressWarning不是一个标记注解。它有一个类型为String[]的成员,这个成员的值为被禁止的警告名。对于
javac编译器来讲,被-Xlint选项有效的警告 名也同样对@SuppressWarings有效,同时编译器忽略掉无法识别的警
  Annotation语法允许在Annotation名后跟括号,括号中是使用逗号分割的name=value对用于为Annotation的
成员赋值。实例如下:
public class FruitService {
@SuppressWarnings(value={ "rawtypes", "unchecked" })
public static
List&Fruit& getFruitList(){
List&Fruit& fruitList=new ArrayList();
return fruitL
@SuppressWarnings({ "rawtypes", "unchecked" })
public static
List&Fruit& getFruit(){
List&Fruit& fruitList=new ArrayList();
return fruitL
@SuppressWarnings("unused")
public static void main(String[] args){
List&String& strList=new ArrayList&String&();
  在这个例子中SuppressWarnings annotation类型只定义了一个单一的成员,所以只有一个简单的value={...}作
为name=value对。又由于成员值是一个数组,故使用大括号来声明数组值。注意:我们可以在下面的情况中缩写
annotation:当annotation只有单一成员,并成员命名为"value="。这时可以省去"value="。比如将上面方法
getFruit()的SuppressWarnings annotation就是缩写的。
  SuppressWarnings注解的常见参数值的简单说明:
    1.deprecation:使用了不赞成使用的类或方法时的警告;
    2.unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的
    3.fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
4.path:在类路径、源文件路径等中有不存在的路径时的警告;
    5.serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
    6.finally:任何 finally 子句不能正常完成时的警告;
    7.all:关于以上所有情况的警告。
没有更多推荐了,}

我要回帖

更多关于 定义annotation的关键字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信