這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Java 注解的使用方法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、望花網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為望花等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。注解說明
Java注解又稱Java標(biāo)注,是Java語(yǔ)言5.0版本開始支持加入源代碼的特殊語(yǔ)法元數(shù)據(jù)。為我們?cè)诖a中添加信息提供了一種形式化的方法,使我們可以在稍后某個(gè)時(shí)刻非常方便的使用這些數(shù)據(jù)。Java語(yǔ)言中的類、方法、變量、參數(shù)和包等都可以被標(biāo)注。和Javadoc不同,Java標(biāo)注可以通過反射獲取注解內(nèi)容。在編譯器生成類文件時(shí),注解可以被嵌入到字節(jié)碼中。Java虛擬機(jī)可以保留注解內(nèi)容,在運(yùn)行時(shí)可以獲取到注解內(nèi)容。
內(nèi)置注解
Java定義了一套注解,共有7個(gè),3個(gè)在java.lang中,剩下4個(gè)在java.lang.annotation中。
1.作用在代碼的注解是:
2.作用在其他注解的注解(或者說元注解)是:
3.從Java 7開始,額外添加了3個(gè)注解:
元注解
元注解就是上面說到的作用在其他注解上的注解。
1.@Retention:表明該注解的生命周期
生命周期類型 | 描述 |
---|---|
RetentionPolicy.SOURCE | 標(biāo)記的注釋僅保留在源級(jí)別中,并由編譯器忽略。 |
RetentionPolicy.CLASS | 標(biāo)記的注釋在編譯時(shí)由編譯器保留,但Java虛擬機(jī)(JVM)會(huì)忽略。 |
RetentionPolicy.RUNTIME | 標(biāo)記的注釋由JVM保留,因此運(yùn)行時(shí)環(huán)境可以使用它。 |
2.@Documented:表明該注解標(biāo)記的元素可以被Javadoc或類似的工具文檔化
3.@Target: 表明該注解可以應(yīng)用的java元素類型
Target類型 | 描述 |
---|---|
ElementType.TYPE | 可以應(yīng)用于類的任何元素。 |
ElementType.FIELD | 可以應(yīng)用于字段或?qū)傩浴?/td> |
ElementType.METHOD | 可以應(yīng)用于方法級(jí)注釋。 |
ElementType.PARAMETER | 可以應(yīng)用于方法的參數(shù)。 |
ElementType.CONSTRUCTOR | 可以應(yīng)用于構(gòu)造函數(shù)。 |
ElementType.LOCAL_VARIABLE | 可以應(yīng)用于局部變量。 |
ElementType.ANNOTATION_TYPE | 可以應(yīng)用于注釋類型。 |
ElementType.PACKAGE | 可以應(yīng)用于包聲明。 |
ElementType.TYPE_PARAMETER | 1.8版本新增,應(yīng)用于類型變量 |
ElementType.TYPE_USE | 1.8版本新增,應(yīng)用于任何使用類型的語(yǔ)句中(例如聲明語(yǔ)句、泛型和強(qiáng)制轉(zhuǎn)換語(yǔ)句中的類型) |
4.@Inherited:表明使用了@Inherited注解的注解,所標(biāo)記的類的子類也會(huì)擁有這個(gè)注解
5.@Repeatable:Java SE 8中引入的,@Repeatable注釋表明標(biāo)記的注釋可以多次應(yīng)用于相同的聲明或類型使用(即可以重復(fù)在同一個(gè)類、方法、屬性等上使用)。
自定義注解
其實(shí)說了這么多,都是一些總結(jié)性的知識(shí)點(diǎn),我敢說到現(xiàn)在,大家還是對(duì)注解是云里霧里的。想要更好的認(rèn)識(shí)注解,只有我們自己定義一個(gè)注解,來實(shí)現(xiàn)一個(gè)我們的注解,通過實(shí)現(xiàn)一個(gè)我們自己的注解來熟悉注解的工作流程。
Java中自定義注解和創(chuàng)建一個(gè)接口相似,聲明一個(gè)注解要用到以下東西:
同時(shí)需要注意以下事項(xiàng):
規(guī)則知道了,下面我來編碼實(shí)現(xiàn)一個(gè)自定義的注解。比如我們?cè)趯?shí)現(xiàn)一個(gè)自定義的ORM框架的時(shí)候,都會(huì)通過注解來實(shí)現(xiàn)數(shù)據(jù)表名與JAVA類的映射,表字段與JAVA類字段的映射關(guān)系,下面就來簡(jiǎn)單實(shí)現(xiàn)這個(gè)功能。
定義Table注解:
package com.jellythink.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value={ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Table { String value(); }