首頁 > Java > java教程 > 什麼是java註解?

什麼是java註解?

青灯夜游
發布: 2019-12-26 14:28:05
原創
5271 人瀏覽過

自Java5.0版本引入註解之後,它就成為了Java平台中非常重要的一部分。開發過程中,我們也時常在應用程式碼中會看到諸如@Override,@Deprecated這樣的註解。那什麼是註解?下面來跟大家介紹一下。

什麼是java註解?

什麼是註解?

註解也叫元數據,也就是一種描述數據的數據。註解是JDK1.5版本開始引入的特性,用於對程式碼進行說明,可以對套件、類別、介面、欄位、方法參數、局部變數等進行註解。

註解有什麼用?

官方解釋:

註解是一系列元數據,它提供數據用來解釋程式碼,但是註解並非是所解釋的程式碼本身的一部分。註解對於程式碼的運作效果沒有直接影響。

1、提供資訊給編譯器: 編譯器可以利用註解來探測錯誤和警告訊息

例如@Override提示子類別要複寫父類別中被修飾的方法

2、編譯階段時的處理: 軟體工具可以用來利用註解資訊來產生程式碼、Html文件或做其它相應處理。

3、執行時期的處理: 某些註解可以在程式運行的時候接受程式碼的提取

# 註解主要針對的是編譯器和其它工具軟體;當開發者使用了Annotation在修飾了類別、方法、Field 等成員之後,這些Annotation 不會自己生效,必須由開發者提供對應的程式碼來提取並處理Annotation 資訊。這些處理提取和處理 Annotation 的程式碼統稱為 APT(Annotation Processing Tool)。

註解可分為三類:

 ● 一類是Java自帶的標準註解,包含@Override(標示重寫某個方法)、@Deprecated(標示某個類別或方法過時)和@SuppressWarnings(標示要忽略的警告),使用這些註解後編譯器就會進行檢查。

 ● 一類為元註解,元註解是用來定義註解的註解,包括@Retention(標明註解被保留的階段)、@Target(標明註解使用的範圍)、@Inherited(標明註解可繼承)、@Documented(標示是否產生javadoc文件)、@Repeatable。

 ● 一類為自訂註解,可以根據自己的需求定義註解

元註解

元註解是可以註解到註解上的註解,或者說元註解是一種基本註解,但是它能夠應用到其它的註解上面。明白點說,就是我們定義註解時用的註解就是元註解。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}
登入後複製

除了@符號,註解很像是一個介面。定義註解的時候需要用到元註解。

在註解中一般會有一些元素以表示某些值。註解的元素看起來就像是介面的方法,唯一的區別在於可以為其製定預設值。沒有元素的註解稱為標記註解,上面的@Test就是一個標記註解。

註解的可用的類型包括以下幾種:所有基本類型、String、Class、enum、Annotation、以上類型的陣列形式。元素不能有不確定的值,即要么有預設值,要么在使用註解的時候提供元素的值。而且元素不能使用null作為預設值。註解在只有一個元素且該元素的名稱是value的情況下,在使用註解的時候可以省略“value=”,直接寫需要的值即可。

元註解總共有5種,@Retention、@Documented、@Target、@Inherited、@Repeatable。

@Retention

英文意為保留期的意思。當 @Retention 應用在一個註解上的時候,它解釋說明了這個註解的存活時間。

@Documented

這個元註解肯定是跟文檔有關。它的作用是能夠將註解中的元素包含到Javadoc 中去

@Target

#目標的意思,@Target 指定了註解運用的地方

##@Inherited

Inherited 是繼承的意思,但是它並不是說註解本身可以繼承,而是說如果一個超類別被@Inherited 註解過的註解進行註解的話,那麼如果它的子類別沒有被任何註解應用的話,那麼這個子類別就繼承了超類別的註解

@Repeatable

#Repeatable 自然是可重複的意思。 @Repeatable 是 Java 1.8 才加進來的,所以算是新的特性。

推薦學習:

Java影片教學

以上是什麼是java註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板