大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java面向?qū)ο?/div>
Java異常
Java數(shù)組
Java常用類
Java集合
Java IO流
Java線程
Java反射
Socket編程
Java注解開發(fā)
Java GoF設(shè)計(jì)模式
HashMap
Java內(nèi)存模型
Java線性表

Java開發(fā)自定義注解

自定義注解的語法規(guī)則

1、使用@interface關(guān)鍵字定義注解,注意關(guān)鍵字的位置

使用@interface自定義注解時(shí),自動(dòng)繼承了java.lang.annotation.Annotation接口,由編譯程序自動(dòng)完成其他細(xì)節(jié)。在定義注解時(shí),不能繼承其他的注解或接口。

2、成員以無參數(shù)無異常的方式聲明,注意區(qū)別一般類成員變量的聲明

其中的每一個(gè)方法實(shí)際上是聲明了一個(gè)配置參數(shù)。方法的名稱就是參數(shù)的名稱

3、可以使用default為成員指定一個(gè)默認(rèn)值,如上所示

4、成員類型是受限的,合法的類型包括原始類型以及String、Class、Annotation、Enumeration (JAVA的基本數(shù)據(jù)類型有8種:byte(字節(jié))、short(短整型)、int(整數(shù)型)、long(長整型)、float(單精度浮點(diǎn)數(shù)類型)、double(雙精度浮點(diǎn)數(shù)類型)、char(字符類型)、boolean(布爾類型)

5、注解類可以沒有成員,沒有成員的注解稱為標(biāo)識(shí)注解,例如JDK注解中的@Override、@Deprecation

6、如果注解只有一個(gè)成員,并且把成員取名為value(),則在使用時(shí)可以忽略成員名和賦值號(hào)“=” ,例如JDK注解的@SuppviseWarnings ;如果成員名 不為value,則使用時(shí)需指明成員名和賦值號(hào)"=",

元注解

何為元注解?就是注解的注解,就是給你自己定義的注解添加注解,你自己定義了一個(gè)注解,但你想要你的注解有什么樣的功能,此時(shí)就需要用元注解對你的注解進(jìn)行說明了。Java5.0定義了4個(gè)標(biāo)準(zhǔn)的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。

1、@Target

@Target說明了Annotation所修飾的對象范圍:即注解的作用域,用于說明注解的使用范圍(即注解可以用在什么地方,比如類的注解,方法注解,成員變量注解等等)

注意:如果Target元注解沒有出現(xiàn),那么定義的注解可以應(yīng)用于程序的任何元素。

取值是在java.lang.annotation.ElementType這個(gè)枚舉中規(guī)定的:

● CONSTRUCTOR:用于描述構(gòu)造器

● FIELD:用于描述域

● LOCAL_VARIABLE:用于描述局部變量

● METHOD:用于描述方法

● PACKAGE:用于描述包

● PARAMETER:用于描述參數(shù)

● TYPE:用于描述類、接口(包括注解類型) 或enum聲明

實(shí)例代碼

2、@Retention

@Retention定義了該Annotation被保留的時(shí)間長短:

(1)某些Annotation僅出現(xiàn)在源代碼中,而被編譯器丟棄;

(2)而另一些卻被編譯在class文件中;編譯在class文件中的Annotation可能會(huì)被虛擬機(jī)忽略,

(3)而另一些在class被裝載時(shí)將被讀取(請注意并不影響class的執(zhí)行,因?yàn)锳nnotation與class在使用上是被分離的)。

使用這個(gè)meta-Annotation可以對 Annotation的“生命周期”限制。

@Retention的取值是在RetentionPoicy這個(gè)枚舉中規(guī)定的

● SOURCE:在源文件中有效(即源文件保留)

● CLASS:在class文件中有效(即class保留)

● RUNTIME:在運(yùn)行時(shí)有效(即運(yùn)行時(shí)保留)

實(shí)例代碼如下:

注意:注解的的RetentionPolicy的屬性值是RUTIME,這樣注解處理器可以通過反射,獲取到該注解的屬性值,從而去做一些運(yùn)行時(shí)的邏輯處理。

3、@Documented

@Documented用于描述其它類型的annotation應(yīng)該被作為被標(biāo)注的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化。Documented是一個(gè)標(biāo)記注解,沒有成員。

4、@Inherited

@Inherited 元注解是一個(gè)標(biāo)記注解,@Inherited闡述了某個(gè)被標(biāo)注的類型是被繼承的。如果一個(gè)使用了@Inherited修飾的annotation類型被用于一個(gè)class,則這個(gè)annotation將被用于該class的子類。

注意:@Inherited annotation類型是被標(biāo)注過的class的子類所繼承。類并不從它所實(shí)現(xiàn)的接口繼承annotation,方法并不從它所重載的方法繼承annotation。

當(dāng)@Inherited annotation類型標(biāo)注的annotation的Retention是RetentionPolicy.RUNTIME,則反射API增強(qiáng)了這種繼 承性。如果我們使用java.lang.reflect去查詢一個(gè)@Inherited annotation類型的annotation時(shí),反射代碼檢查將展開工作:檢查class和其父類,直到發(fā)現(xiàn)指定的annotation類型被發(fā)現(xiàn), 或者到達(dá)類繼承結(jié)構(gòu)的頂層。

● 定義注解1

● 定義注解2

● 定義一個(gè)基類

● 定義一個(gè)子類

● 通過反射獲取子類中使用的所有的注解

主站蜘蛛池模板: 欧美与黑人午夜性猛交久久久 | 日韩三级一区二区 | 午夜在线一区 | ijzzijzz精的女人美女 | 免费在线不卡视频 | 激情综合视频 | 日韩久久精品 | 欧美日韩综合高清一区二区 | 亚洲欧美一二三区 | 奇米久久久 | 91精品啪在线观看国产色 | 天天操天天谢 | 50-60岁老妇女一级毛片 | 亚洲国产精品日韩在线 | 国产欧美日韩精品a在线观看 | 日本色午夜 | 尤物久久99热国产综合 | 亚洲国产精久久久久久久 | 久久www免费人成_看片高清 | 夜夜摸天天操 | 日本一区不卡视频 | 激情五月婷婷久久 | 久久国产精品99久久久久久牛牛 | 日韩午夜在线视频不卡片 | 香蕉久久久 | 久久综合欧美成人 | 日本欧美一区二区三区 | 黄色一级片a | 欧美精品免费在线观看 | 天天影视欧美综合在线观看 | 免费黄色毛片 | 四虎永久精品免费观看 | 日日撸| 成人a视频高清在线观看 | 日本一级片免费观看 | 乡下女色又黄一级毛片 | 日本午夜色 | 欧美精品日本一级特黄 | 久久国产乱子伦精品免费不卡 | 国产精品不卡在线观看 | 亚洲精品国产高清不卡在线 |