Cyh的博客
Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
公告
一直努力努力努力,像奴隸奴隸奴隸!~~
<
2025年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
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
1
2
3
4
5
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
隨筆檔案
(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標簽的使用(18237)
2.?struts2異常攔截器(5866)
3.?struts2迭代標簽(3851)
4.?用freemind 秒殺Spring Security(1923)
5.?加載順序會影響對spring bean 的調用。(1493)
注釋功能Annotation
Posted on 2009-12-20 00:32
啥都寫點
閱讀(214)
評論(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 © 啥都寫點
主站蜘蛛池模板:
铜鼓县
|
庄河市
|
喜德县
|
阿图什市
|
民勤县
|
洛隆县
|
南部县
|
曲周县
|
沙坪坝区
|
都安
|
岳阳县
|
桑日县
|
榆社县
|
象州县
|
德江县
|
普格县
|
凯里市
|
县级市
|
牟定县
|
和田县
|
深水埗区
|
孟州市
|
东源县
|
无为县
|
灌南县
|
高阳县
|
永川市
|
北流市
|
通州市
|
巫溪县
|
灌南县
|
天柱县
|
连江县
|
达日县
|
明溪县
|
皋兰县
|
原平市
|
老河口市
|
麻江县
|
罗城
|
武强县
|