


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
注解(Annotation)简Annotation(注解)是JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5Java源代码中不但可以包含功能性的实现代码,还可以添说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,JDK提供的几个基本注注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。java.lang.annotation.Annotation接口是所有的AnnotationJDK1.5之后,Annotation类型,用户直接使用即可。@Override:覆写的@Deprecated:不赞成使用Annotation(过期、失效)Annotation9-1图9- 三种内定的@Override另外,Java还提供了四种元注解,它们专门负责新注解的创建。@Target:表示该注解用于什么地方 @Target(ElementTypeANNOTATION_TYPE)public@interfaceTarget{ElementType[]}ElemenetType 构造器之前。 域之前(包括enum实例。 局部变量之前。 方法之前 注解类型之前 @Retention:表示在什么级别保存该注解信息@@Target(ElementTypeANNOTATION_TYPE)public@interfaceRetention{RetentionPolicy}RetentionPolicyRetentionPolicy.SOURCERetentionPolicy.CLASS表示此注解信息保留在程序源文件(*.java)和编译之后的类文件(*.class)JVM之RetentionPolicy.RUNTIME表示此注解信息保留在源文件(*.java、类文件(*.class)JVM将在运行期也保留注释,因此可以通过反射机举一个例子,如@OverrideRetentionSOURCE,编译成功了就不要这一些检查的信息,相反,@Deprecated里面的Retention设为RUNTIME,表示除了在编译时会警告我们使用了哪个被Deprecated的方法,在执行的时候也可以查出该方法是否被@ed:将此注解包含在javadoc中@Inherited:允许子类继承父类中的注在MyEclipse中输入@Override然后按F3可以定位到@Override在Java中的位置。如下就是@Override注解的:@Target(ElementTypeMETHOD)public@interfaceOverride{}@Override表示@Override注解可以用于什么地方,这里只能用于METHOD方法前面;@Rectetion(RectetionPolicy.SOURCE)用来定义注解在哪一个级别可用,SOURCE表示源代码中,即@Override会被编译器丢弃。@Overrideclasspublicvoid}}classBextendsA{publicvoiddisp(int}}disp位置。如下就是@Deprecated注解的:@public@interfaceDeprecated}@ 表示 注解包含 文档中MyEclipseDateF3java.util.Date这个类的说明时,可以publicDate(intyear,intmonth,intdate){this(year,month,date,0,0,0);}这些语法的特点是在方法的前面加上了@Deprecated修饰之后该方多一条横杠,@Deprecated使用举例: classC{@Deprecated//修饰属性privateStringname"zhangsan";@Deprecated//修饰方法publicintadd(inta,intreturna+}}@SuppressWarnings用于警告信息通常写完一个程序之后可能会有这样那样的警告信息,可以利用@SuppressWarnings来消除。MyEclipse中输入@SuppressWarningsF3可以定位到@SuppressWarningsJava中的位置。如下就是@SuppressWarnings注解的@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,public@interfaceSuppressWarnings{String[]value();}})表示@SuppressWarnings可以用于类、接口、枚举、域、方法、参数、构造器、局部String[]value();数组属性,表示可以列举多项。publicclassTestpublicstaticvoidmain(String[]args){inti=}}")以同时多个警告信息,只需要以数组的形式出现即可。",",自定义注定义注//@Target(适用场合//@Retention(保存级别 [public]@interface注解名称{数据类型变量名称();}如果定义注解时没有指定@Retention元注解来说明它的生命周期,那么该注解默认的CLASS文件中。当然,也可以由一个@Retetion的元注解指定它的 ed设置一些说明信息。 public@interfaceMyAnnotation{Stringvalue();}其中的@interface是一个关键字,用来一个注解。在设计annotation的时候必须把一个类型定义为@interface,而不能用class或interface关键字。所有的注解类都隐式继承于成员,成员的有以下几点限制:·成员以无参无抛出异常的方式,如“booleanvalue(Stringstr);”、“booleanvalue()throwsException;”等方式是的;·default为成员指定一个默认值,如:“Stringlevel()default"LOW_LEVEL";”、“int[]high()default{2,3,4};”是合法的,当然也可以不指定默认值;解类型,以及上述类型的数组类型。如“ForumServicevalue();”、“Listfoo();”是的。·value(),这样在使用时可以忽略成员名(=,如value成员进行赋值则也可不使用赋值号,如果同时对多个成员进行赋值,则必须使用赋值号,如@DeclareParents(name="",age=25)。使用注@注解名(1=成员值1,成员2=成员值2@注解名(1={成员值1,成员2…},成员名2=成员2,publicclassTestAnnotation{}如果成员是数组类型,可以通过{}boolean数组的成员可以设置为{true,false,true}。下面是几个注解使用的例子: ,synopsis="Enabletime-travel",engineer="Mr.@MyAnnotation("myAnnnotation")importjava.lang.annotation.*; public@interfaceMyAnno{String[]value();}importjava.lang.annotation.*; public@interfaceMyAnnotation{String[]name();intage()default25;MyAnno[]anno();}@MyAnnotation(name={"aaa","bbb"},anno={@MyAnno(value={"aaa","bbb"}),@MyAnno(value={"ccc","ddd","eee"})})publicclassTestAnnotation
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论