目錄
一、什麼是註解
二、實作
三、總結
首頁 Java java教程 一篇文章帶你看懂java中的註解

一篇文章帶你看懂java中的註解

Jul 23, 2018 am 10:45 AM
java註解

註解這個東西,只要是一個java的開放人員都不會陌生,但是我們用了那麼多的註解,我們的註解是怎樣為我們工作的呢?透過前段時間的學習,我對註解有了一點新的理解。

一、什麼是註解

註解在我們通俗的看來,就是一個對於Annotation介面的一個實現,他和類別還有介面是處於同一個宣告和使用層級的,都繼承了Object基類,並且都有.class屬性。

但是註解本身真的起作用嗎?

不信你自己定義一個註解試試,然後放在你的程式碼上,結果就是毛用都沒有。

我們可以將註解看做是一個帶有屬性的標記,我們給我們的程式碼打上這個標記,就意味著我們的程式碼具有了註解所代表的某些特性了,但是不代表我們給他打上註解的一瞬間就有這種特性了。

我們的程式碼在運行前是需要進行編譯的,有的時候在運行時我們也是需要進行動態編譯的,這個時候,如果我們嵌入了反射,或者動態代理的程式碼去解析這個類,並給這個類加上他應有的特性,這個時候類才具有了註解所代表的意義。

舉個例子,例如我們在上幼兒園的時候,上廁所是需要舉手,然後老師帶領著去的,這個時候,舉手就代表你打上了上廁所的註解,如果老師不鳥你的話,你是上不了廁所的,只能憋著,如果老師這個時候掃視全班,發現你舉手了,她才會去你那裡帶著你和一群都在舉手的同學一起去上廁所。這時候你才發揮了上廁所的本領。

二、實作

我們看到的註解,大部分其實都不是一開始java給你定義好的,一開始就規定了的註解只有最開始的四個元註解,他們分別是:

  •    @Documented –註解是否將包含在JavaDoc中

  •    @Retention –什麼時候使用該註解

  •  @Target –註解用於什麼地方

  • #@Inherited – 是否允許子類別繼承該註解

#@Documented ,這個註解的意思是,在我們產生javaDoc的時候是否把這個類別的說明,或者方法的說明放在我們的java文件中。一般如果不用java自備的專案文檔工具產生文檔的話是沒有什麼用處的。

@Retention,這個註解表示了我們定義註解的生命週期,以下就是它的各種賦值和作用說明:

  1. RetentionPolicy.SOURCE : 在編譯階段丟棄。這些註解在編譯結束之後就不再有任何意義,所以它們不會寫入字節碼。 @Override, @SuppressWarnings都屬於這類註解。

  2.  RetentionPolicy.CLASS : 在類別載入的時候丟棄。在字節碼檔案的處理中有用。註解預設使用這種方式

  3. RetentionPolicy.RUNTIME : 永遠不會丟棄,運行期也保留該註解,因此可以使用反射機制讀取該註解的資訊。我們自訂的註解通常使用這種方式

@Target ,表示了註解用於什麼地方的標記,預設為標記任何元素,可以給裡面賦值ElementType的值:

  1.  ElementType.CONSTRUCTOR:用於描述建構器

  2. #ElementType.FIELD:成員變數、物件、屬性(包含enum實例)

  3. ElementType.LOCAL_VARIABLE:用來描述局部變數

  4.  ElementType.METHOD:用來描述方法

  5. ElementType.PACKAGE:用於描述套件

  6.  ElementType.PARAMETER:用於描述參數

  7. ElementType.TYPE:用於描述類別、接口(包括註解類型) 或enum宣告

@Inherited ,定義該註解和子類別的關係,@Inherited 元註解是一個標記註解,@Inherited闡述了某個被標註的類型是被繼承的。如果一個使用了@Inherited修飾的annotation類型被用於一個class,則這個annotation將被用於該class的子類別。

我們可以自訂一個註解:

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 水果名称注解
 */
@Target(FIELD)
@Retention(RUNTIME)
@Documented
public @interface FruitName {
    String value() default "";
}
登入後複製

上述的元註解就是為了自訂註解服務的。

三、總結

總之,註解就是一個用來標記程式碼的標記,我們可以透過掃描不同的註解來實現不同的註解方法,透過java的動態代理和反射我們可以輕鬆的獲得我們註解標記的內容,從而操作我們寫好的類別或方法,下篇文章,我將定義一個自訂的註解,並寫出他的實作。

以上是一篇文章帶你看懂java中的註解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在Java中使用註解函數實作自訂註解 如何在Java中使用註解函數實作自訂註解 Oct 24, 2023 am 10:32 AM

如何在Java中使用註解函數實作自訂註解註解(Annotation)是Java中的一種特殊的語法元素,它可以用來為程式碼添加元資料訊息,以便在運行時進行解析和處理。 Java提供了一些預先定義的註解(如@Override、@Deprecated等),同時也支援使用者自訂註解。在某些場景下,使用自訂的註解可以使程式碼更簡潔、可讀性更強。本文將介紹如何在Java中使

如何解決:Java註解錯誤:註解參數類型錯誤 如何解決:Java註解錯誤:註解參數類型錯誤 Aug 18, 2023 am 11:12 AM

如何解決:Java註解錯誤:註解參數類型錯誤引言:在Java開發中,註解(Annotation)是一種元資料的形式,用於為程式元素(類別、方法、欄位等)添加額外的資訊。然而,有時我們可能會遇到註解參數類型錯誤的問題,這會導致編譯錯誤或執行時異常。本文將介紹解決Java註解參數類型錯誤的方法,並提供程式碼範例幫助讀者更好地理解。理解註解參數類型錯誤:註解參數類型錯

Java註解的作用域與生命週期如何理解? Java註解的作用域與生命週期如何理解? May 03, 2024 pm 06:06 PM

註解的作用域決定了它們應用於程式碼的哪些部分,而生命週期描述了它們在程式碼中的存在時間。作用域有元素級別、聲明類型級別和程式碼區塊級別,生命週期分編譯時、類別載入時和執行時。註解的生命週期包括編譯時被加入到class檔案中,類別載入時被JVM處理,運行時可透過反射存取。

解決Java註解解析異常(AnnotationParsingException)的方法 解決Java註解解析異常(AnnotationParsingException)的方法 Aug 20, 2023 am 10:41 AM

解決Java註解解析異常(AnnotationParsingException)的方法引言:在Java開發中,註解成為了一種非常重要的技術,它可以透過在原始碼中加入元資料的方式,來描述程式中的各種資訊。而在使用註解的過程中,有時我們可能會遇到AnnotationParsingException異常,這個異常代表了在解析註解時發生的錯誤。本文將介紹如何解決這個

深入理解Java註解開發的經驗與建議 深入理解Java註解開發的經驗與建議 Nov 22, 2023 pm 05:40 PM

深入理解Java註解開發的經驗與建議隨著Java語言的發展,註解(Annotation)成為了Java開發中不可或缺的一部分。作為一種元數據,註解可以為程式碼添加額外的描述訊息,幫助開發者更好地理解程式碼邏輯。同時,註解還可以在編譯時期和運行時期進行處理,以實現自動化的功能。在日常的Java開發中,我們常會使用到註解。然而,要深入理解和有效地應用註解,就需要掌握一

如何解決:Java註解錯誤:未定義的註解 如何解決:Java註解錯誤:未定義的註解 Aug 17, 2023 am 11:30 AM

如何解決:Java註解錯誤:未定義的註解在使用Java開發過程中,註解是一種十分常見的技術手段,可以用來為程式碼添加一些額外的資訊或行為。然而,有時候我們可能會遇到一個錯誤:未定義的註解。這個問題在編譯或執行時會導致程式無法正常運作,因此解決這個錯誤顯得十分重要。本文將介紹一些解決未定義註解錯誤的方法,並提供一些程式碼範例。一、檢查註解的導包當我們使用一個自

Java 中的註解處理器 Java 中的註解處理器 Jun 09, 2023 am 09:14 AM

Java中的註解處理器Java中的註解處理器是一種能夠偵測和處理Java程式碼中註解的工具。使用註解處理器可以增強編譯時檢查,產生額外的程式碼,甚至修改已有程式碼,從而提高程式碼的可讀性、可維護性和可重複使用性。註解處理器通常是編寫在Java中的,而不是在執行時解釋和執行的。這為註解處理器提供了許多方便,例如可以使用更豐富的Java類型系統、物件導向特性和

如何透過Java的註解實現自訂的元資料? 如何透過Java的註解實現自訂的元資料? Aug 03, 2023 am 08:11 AM

如何透過Java的註解實現自訂的元資料?引言:在Java開發過程中,我們經常需要為類別、方法、屬性等元素添加一些額外的訊息,以便在執行時進行處理。 Java的註解(Annotation)機制為我們提供了一種靈活的方式來實現自訂的元數據,使得我們可以在編碼過程中更加便捷地添加和使用額外的資訊。本文將介紹如何透過Java的註解機制實作自訂的元數據,並給出對應的

See all articles