2字节取值范围_Java注解-元数据、注解分类、内置注解和自定义注解|乐字节
大家好,我是樂字節(jié)的小樂,上次說過了Java多態(tài)的6大特性|樂字節(jié),接下來我們來看看Java編程里的注解。
Java注解有以下幾個知識點:
- 元數(shù)據(jù)
- 注解的分類
- 內(nèi)置注解
- 自定義注解
- 注解處理器
- Servlet3.0
本文先介紹前面4個知識點:元數(shù)據(jù)、注解的分類、內(nèi)置注解、自定義注解。
一、注解簡介
注解是Java 1.5引入的,目前已被廣泛應(yīng)用于各種Java框架,如Hibernate,Jersey,
Spring。注解相當于是一種嵌入在程序中的元數(shù)據(jù),可以使用注解解析工具或編譯器對
其進行解析,也可以指定注解在編譯期或運行期有效。
在注解誕生之前,程序的元數(shù)據(jù)存在的形式僅限于java注釋或javadoc,但注解可以提
供更多功能,它不僅包含元數(shù)據(jù),還能作用于運行期,注解解析器能夠使用注解決定處
理流程。
Annotation(注解)就是Java提供了一種元程序中的元素關(guān)聯(lián)任何信息和任何元數(shù)據(jù)
(metadata)的途徑和方法。Annotation是一個接口,程序可以通過反射來獲取指定
程序元素的Annotation對象,然后通過Annotation對象來獲取注解里面的元數(shù)據(jù)。
注解API非常強大,被廣泛應(yīng)用于各種Java框架,如Spring,Hibernate,JUnit。
二、 元數(shù)據(jù)metadata
元數(shù)據(jù)從metadata一詞譯來,就是“關(guān)于數(shù)據(jù)的數(shù)據(jù)”的意思,即描述數(shù)據(jù)的結(jié)構(gòu)信息。元數(shù)據(jù)的功能作用有很多,比如:你可能用過Javadoc的注釋自動生成文檔。這就是元數(shù)據(jù)功能的一種。總的來說,元數(shù)據(jù)可以用來創(chuàng)建文檔,跟蹤代碼的依賴性,執(zhí)行編譯時格式檢查,代替已有的配置文件。
在Java中元數(shù)據(jù)以標簽的形式存在于Java代碼中,元數(shù)據(jù)標簽的存在并不影響程序代碼的編譯和執(zhí)行,被用來生成其它的文件或只在運行時知道被運行代碼的描述信息。
其作用如下:
①生成文檔:這是最常見的,也是java 最早提供的注解。常用的有@param @return 等;
② 跟蹤代碼依賴性,實現(xiàn)替代配置文件功能。常見的是spring 2.5 開始的基于注解配置。作用就是減少配置。現(xiàn)在的框架基本都使用了這種配置來減少配置文件的數(shù)量。;
③在編譯時進行格式檢查。如@override 放在方法前,如果你這個方法并不是覆蓋了超類方法,則編譯時就能檢查出。
三、 注解的分類
根據(jù)注解參數(shù)的個數(shù):
1)、標記注解:一個沒有成員定義的Annotation類型被稱為標記注解。
2)、單值注解:只有一個值
3)、完整注解:擁有多個值
根據(jù)注解使用方法和用途:
1)、JDK內(nèi)置系統(tǒng)注解
2)、元注解
3)、自定義注解
四、 內(nèi)置注解
JavaSE中內(nèi)置三個標準注解,定義在java.lang中:
@Override
限定重寫父類方法,若想要重寫父類的一個方法時,需要使用該注解告知編譯器我們正在重寫一個方法。如此一來,當父類的方法被刪除或修改了,編譯器會提示錯誤信息;或者該方法不是重寫也會提示錯誤。
publicQQ 類編譯不會有任何問題,Bmw類在編譯的時候會提示相應(yīng)的錯誤。父類中省略了public abstract修飾符。@Override注解只能用于方法,不能用于其他程序元素。
@Deprecated
標記已過時,當我們想要讓編譯器知道一個方法已經(jīng)被棄用(deprecate)時,應(yīng)該使用這個注解。Java推薦在javadoc中提供信息,告知用戶為什么這個方法被棄用了,以及替代方法是什么;
/**3. @SuppressWarnings
抑制編譯器警告,該注解僅僅告知編譯器,忽略它們產(chǎn)生了特殊警告。如:在java泛型中使用原始類型。其保持性策略(retention policy)是SOURCE,在編譯器中將被丟棄。
/**五、 自定義注解
1、簡單入門
@interface:用來聲明一個注解。注解類里的每一個方法實際上是聲明了一個配置參數(shù)。方法的名稱就是參數(shù)的名稱,返回值類型就是參數(shù)的類型。可以通過default來聲明參數(shù)的默認值。
@interface2、元注解
元注解的作用就是負責(zé)注解其他注解。Java5.0定義了4個標準的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。Java5.0定義的元注解有四個,
這些類型和它們所支持的類在java.lang.annotation包中可以找到。
@Target
用于描述注解的使用范圍(即:被描述的注解可以用在什么地方)。表示支持注解的程序元素的種類,一些可能的值有TYPE, METHOD, CONSTRUCTOR, FIELD等等。如果Target元注解不存在,那么該注解就可以使用在任何程序元素之上。
取值(ElementType)有:
1.CONSTRUCTOR:用于描述構(gòu)造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部變量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述參數(shù)
7.TYPE:用于描述類、接口(包括注解類型) 或enum聲明
此時在空注解中加入@Target元注解如:
//此注解只能用在方法上@Retention
表示需要在什么級別保存該注釋信息,用于描述注解的生命周期(即:被描述的注解在什么范圍內(nèi)有效)表示注解類型保留時間的長短。
取值(RetentionPoicy)有:
1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在class文件中有效(即class保留)
3.RUNTIME:在運行時有效(即運行時保留)
此時在上述注解中加入@Retention元注解如:
// 此注解可以用于注解類、接口(包括注解類型) 或enum聲明@Documented
表示使用該注解的元素應(yīng)被javadoc或類似工具文檔化,它應(yīng)用于類型聲明,類型聲明的注解會影響客戶端對注解元素的使用。如果一個類型聲明添加了Documented注解,那么它的注解會成為被注解元素的公共API的一部分,@Documented是一個標記注解。
//可以被例如javadoc此類的工具文檔化@Inherited
表示一個注解類型會被自動繼承,如果用戶在類聲明的時候查詢注解類型,同時類聲明中也沒有這個類型的注解,那么注解類型會自動查詢該類的父類,這個過程將會不停地重復(fù),直到該類型的注解被找到為止,或是到達類結(jié)構(gòu)的頂層(Object)。
//被子類繼承的注解3、深入自定義注解
使用@interface自定義注解時,自動繼承了java.lang.annotation.Annotation接口,由編譯程序自動完成其他細節(jié)。在定義注解時,不能繼承其他的注解或接口。
⑴定義注解格式:
@interface用來聲明一個注解,其中的每一個方法實際上是聲明了一個配置參數(shù)。方法的名稱就是參數(shù)的名稱,返回值類型就是參數(shù)的類型(返回值類型只能是基本類型、Class、String、enum)。可以通過default來聲明參數(shù)的默認值。
public @interface 注解名{定義體s}
⑵注解參數(shù)(即方法)
注解里面的每一個方法實際上就是聲明了一個配置參數(shù),其規(guī)則如下:
①修飾符
只能用public或默認(default)這兩個訪問權(quán)修飾 ,默認為default
②類型
注解參數(shù)只支持以下數(shù)據(jù)類型:
基本數(shù)據(jù)類型(int,float,boolean,byte,double,char,long,short);
String類型;
Class類型;
enum類型;
Annotation類型;
以上所有類型的數(shù)組
③命名
對取名沒有要求,如果只有一個參數(shù)成員,最好把參數(shù)名稱設(shè)為"value",后加小括號。
④參數(shù)
注解中的方法不能存在參數(shù)
⑤默認值
可以包含默認值,使用default來聲明默認值。
⑶實例如下
/*總結(jié)
以上是生活随笔為你收集整理的2字节取值范围_Java注解-元数据、注解分类、内置注解和自定义注解|乐字节的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工预-MYSQL
- 下一篇: python 列表副本_列表副本不工作?