Cyh的博客
Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220
导航
BlogJava
首页
新随笔
联系
聚合
管理
公告
一直努力努力努力,像奴隶奴隶奴隶!~~
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
随笔档案
(25)
2011年5月 (1)
2010年4月 (12)
2010年1月 (1)
2009年12月 (2)
2009年6月 (1)
2009年4月 (4)
2009年2月 (4)
文章分类
(219)
Android(26)
DB(5)
J2EE(31)
J2SE(79)
JavaScript(15)
others(47)
SOA&Web Service(1)
中间件(1)
软件工程(12)
软件架构(2)
文章档案
(220)
2011年8月 (1)
2010年12月 (23)
2010年11月 (2)
2010年8月 (5)
2010年7月 (2)
2010年6月 (2)
2010年5月 (1)
2010年4月 (12)
2010年3月 (28)
2010年2月 (5)
2010年1月 (23)
2009年12月 (39)
2009年6月 (14)
2009年5月 (31)
2009年3月 (2)
2009年2月 (29)
2009年1月 (1)
新闻档案
(66)
2010年10月 (1)
2010年9月 (5)
2010年8月 (11)
2010年7月 (21)
2010年6月 (13)
2010年5月 (8)
2010年4月 (5)
2009年11月 (2)
相册
Ryan
收藏夹
(7)
JAVA(7)
最新随笔
1. 集成FCKeditor 3.5.3
2. android自适应屏幕方向和大小
3. Android游戏开发之旅(二十) 双按事件捕获
4. Android游戏开发之旅(十八) SoundPool类
5. Android游戏开发之旅(十九) 分辨率大全
6. Android游戏开发之旅(十七) 图像渐变特效
7. Android游戏开发之旅(十六) 异步音乐播放
8. Android游戏开发之旅(十四) 游戏开发实战一
9. Android游戏开发之旅(十五) 按键中断处理
10. Android游戏开发之旅(十二)Sensor重力感应(2)
搜索
最新评论
1. re: struts2 checkboxlist标签的使用
同居同意同意
--yuk
2. re: struts2 checkboxlist标签的使用
ss
--d
3. re: JavaMail(4)--使用POP3接收邮件
邮件信息可以打印出来,可是下载邮件会出错是什么原因?
--琳喵喵0721
4. re: JavaMail(4)--使用POP3接收邮件
评论内容较长,点击标题查看
--流风
5. re: 操作PDF文件
评论内容较长,点击标题查看
--ly.wolf
阅读排行榜
1. struts2 checkboxlist标签的使用(18226)
2. struts2异常拦截器(5857)
3. struts2迭代标签(3845)
4. 用freemind 秒杀Spring Security(1914)
5. 加载顺序会影响对spring bean 的调用。(1489)
注释功能Annotation
Posted on 2009-12-20 00:32
啥都写点
阅读(207)
评论(0)
编辑
收藏
所属分类:
J2SE
Java有两个常用的内置的注释:
@Override放在方法的访问修饰符前,表示该方法覆盖了父类的同名同参方法,如果该方法没有覆盖父类的方法而使用该注释,则编译器会报错。
@Deprecated放在变量和方法的访问修饰符前,表示该变量或者方法已经不推荐使用,通常是因为它很危险或者是存在更好的选择。
可以自定义注释类型,与enum定义枚举类型一样,使用@interface定义注释类型。
能在自定义的注释类型中定义其他类、属性和方法。定义属性时,以属性名为方法名,以属性类型为方法的返回值类型,方法后接default关键字表示属性的默认值。如"String name();"表示该注释类型具有name属性,类型为String;而"int age()default 20;"表示该注释类型具有age属性,类型为int,默认值为20
可以在自定义注释类型的声明中添加注释,即注释的元注释。Java有2个常用的内置的元注释。
@Target指定Annotation类型可以应用的程序元素, 程序元素的类型由java.lang.annotation.ElementType枚举类定义。如ElementType.METHOD表示该注释类型只能用于方法声明中。
@Retention和Java编译器处理Annotation类型的方式有关,这些方式有java.lang.annotation.RetentionPolicy枚举类定义。如RetentionPolicy.RUNTIME表示该注释类型将被编译成class文件。
@Documented指明需要在Javadoc中包含注释类型(默认是不包含的)
import
java.lang.annotation.ElementType;
import
java.lang.annotation.Retention;
import
java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target;
/** */
/**
* 使用注释Annotation.
* Java 编程的一个最新趋势就是使用元数据,元数据可以用于创建文档,
* 跟踪代码中的依赖性,甚至执行基本编译时检查。
* 许多元数据工具(如Xdoclet)将这些功能添加到核心Java语言中,暂时成为Java编程功能的一部分。
* Annotation是可以添加到代码中的修饰符,
* 可以用于包声明、类型声明、构造函数、方法、域变量、参数和变量
*/
public
class
AnnotationData
{
@Deprecated
private
String name;
public
AnnotationData(String name)
{
this
.name
=
name;
}
//
方法声明中使用了内置的@Override元数据,表示该方法覆盖了父类的同名同参数方法
//
如果父类不存在该方法,则编译不会通过。
@Override
public
String toString()
{
return
super
.toString()
+
this
.name;
}
@Override
public
int
hashCode()
{
return
toString().hashCode();
}
/** */
/**
* 方法中使用了内置的@Deprecated元数据,表示该方法已经不被推荐使用了。
*
@return
*/
@Deprecated
public
String getName()
{
return
name;
}
public
String getAnnotationDataName()
{
return
this
.name;
}
//
下面自定义元数据类型
//
使用@interface声明Annotation类型
public
@
interface
MyAnnotation
{
//
在元数据类中可以定义其他类
public
enum
Severity
{
CRITICAL, IMPORTANT, TRIVIAL, DOCUMENTATION
}
;
//
定义数据成员不需要定义getter和setter方法,
//
只需要定义一个以成员名称命名的方法,并指定返回类型为需要的数据类型
//
default关键字为Annotation类型的成员设置缺省值
Severity severity()
default
Severity.IMPORTANT;
String item();
String assignedTo();
String dateAssigned();
}
//
使用自定义Annotation类型,在使用时,
//
如果Annotation类型在其他的包下,需要跟使用类一样,import它
@MyAnnotation(
severity
=
MyAnnotation.Severity.CRITICAL,
item
=
"
Must finish this method carefully
"
,
assignedTo
=
"
Programmer A
"
,
dateAssigned
=
"
2006/09/10
"
)
public
void
doFunction()
{
//
do something
}
//
下面再定义一个Annotation类型,使用了元数据的元数据
//
@Target指定Annotation类型可以应用的程序元素,
//
程序元素的类型由java.lang.annotation.ElementType枚举类定义
//
@Retention和 Java 编译器处理Annotation类型的方式有关,
//
这些方式由java.lang.annotation.RetentionPolicy 枚举类定义
//
@Documented指明需要在Javadoc中包含Annotation(缺省是不包含的)
//
@Retention(RetentionPolicy.RUNTIME)这个meta-annotation
//
表示了此类型的annotation将编译成class文件,而且还能被虚拟机读取。
//
而@Target(ElementType.METHOD)表示此类型的annotation只能用于修饰方法声明
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public
@
interface
MyNewAnnotation
{
}
}
--
学海无涯
Powered by:
BlogJava
Copyright © 啥都写点