- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京动力节点-Struts2讲义-第4章Struts2注解式开发
第4 章 Struts2 注解式开发
随着项目的扩大,配置文件会变得越来越大,越来越臃肿,不利于开发与维护。而注解
式编程,则可以大大缩小配置文件。
注解可以放在某个语法单元的头部,表示特定的意义。这个语法单元可以是类、接口、
属性、方法,及局部变量等。
4.1 注解的基础知识
以下注解知识的讲解,均使用使用@Overide 、@Deprecated (过时)、@SuppressWarnings
举例。
4.1. 1 注解的基础语法
A 、注解后是没有分号的。
B、注解首字母是大写的,因为注解与类、接口是同一级别的。一个注解,后台对应着
一个@interface 类。
C、在同一语法单元上,同一注解只能使用一次。
D、在注解与语法单元之间可以隔若干空行、注释等非代码内容。
4.1.2 注解的注解
打@Deprecated 源码,看到其定义上还有三个注解:@Documented 、@Retention、@Target。
这三个注解的意义是:
@Target :用于指定该注解可以标注的语法类型。CONSTRUCTOR (构造器)、
LOCAL_VARIABLE (局部变量)、METHOD (方法)、FIELD (属性)、PACKAGE (包)、PARAMETER
(参数)、TYPE (类型)。
注意,对于TYPE 常量,其意义有两个:一是指该注解可以用在类、接口、枚举等类上;
二是指该注解可以作为其它注解的属性值。例如,后面要学到的@Result 、@InterceptorRef
就属性第二个意思。
@Documented :用于指定该注解定义时的注释信息能否显示在javaAPI 说明文档上。没
有添加的话,使用javadoc 生成API 文档时就不会该注解的信息添加到文档。
@RetentionPolicy:这是一个enum 类型,共有三个值:SOURCE,CLASS 和 RUNTIME。
SOURCE:代表这个Annotation 类型的信息只会保留在程序源码里,源码如果经过了编
译之后,Annotation 的数据就会消失,并不会保留在编译好的.class 文件中。
ClASS :代表这个Annotation 类型的信息除了保留在程序源码里外,同时也会保留在编
译好的.class 文件里。但在执行时,并不会把这一些信息加载到虚拟机(JVM) 中去。这是
Retention 的默认值。
RUNTIME:表示在源码、编译好的.class 文件中保留信息,同时在执行时还会把这些信
息加载到JVM 中。
举例:@Override 中的Retention 值为SOURCE,编译成功了就不要这一些检查的信息。
相反@Deprecated 中Retention 的值为RUNTIME,表示除了在编译时会警告我们使用了
哪个被Deprecated 的方法,在执行的时候也可以查出该方法是否被Deprecated。
4.1.3 注解的属性
当某变量被声明了,但却未被使用;或某集合在声明或定义时未加泛型说明等情况发生
时,会在代码下给出警告黄线。Ctrl + 1,可在代码上添加一个注解@SuppressWarnings() 。并
且发现,不同的情况,其参数是不同的。
打开其源码,看到其定义与@Deprecated 是不同的,其接口体中声明了一个方法String[]
value() 。那么该注解在使用时必须包含一个属性value ,类型为String[]。且该参数没有默认
值,即必须给出value 的值。
对于注解的属性,需要注意以下几点:
(1)数组问题
该属性在源码定义时被声明为数组,但在具体使用时却只要赋予一个值,此时无需将该
值再定义为一个数组后赋给该属性。直接将该值赋给该属性即可。例如,对于声明为字符串
数组String[]的value 属性,可以将字符串String 直接赋给该value 。
(2 )默认值问题
若某属性在注解定义时声明了其默认值,则在注解使用时,可以不为其指定属性值。注
解会自动使用其默认值。
(3)value 属性问题
若注解在使用时只需使用其value 属性,其它属性要么有默认值,要么该注解只声明了
一个value 属性,此时,在注解使用时value
文档评论(0)