国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

注解(待完善)

Channe / 2650人閱讀

摘要:中提供了前四個元注解。在中新添加了最后一個注解。指定了注解可以用于的范圍??梢阅J設置為空字符串如果沒有默認值的話,在使用的時候則需要對它進行賦值。反射程序運行時獲取注解的值,設置為??梢允褂每兆址?/p>

分類

元注解(meta-annotation)

java元注解就是用來注解其他注解。可以理解為元注解是其他定義的注解的基礎。
元注解有 @Retention、@Documented@Target、@Inherited@Repeatable 。jdk1.5中 提供了前四個元注解。在jdk1.8中新添加了最后一個注解。
下面我們開始新定義一個注解,對這些元注解加以說明。

首先我們定義一個@GoodMan的注解

@Retention

這個注解是用來解釋說明它所注解的注解的存活期。
它的值可以有如下三種

RetentionPolicy.SOURCE:注解只在源碼階段保留,在編譯器進行編譯時它將被丟棄忽視。

RetentionPolicy.CLASS:注解只被保留到編譯進行的時候,它并不會被加載到 JVM 中。

RetentionPolicy.RUNTIME:注解可以保留到程序運行的時候,它會被加載進入到 JVM 中,所以在程序運行時可以獲取到它們

@Documented

在使用javadoc工具生成幫助文檔的時候保留其注解信息。也就是引用這個元注解的注解在javadoc文檔中會保留自己的注解信息。

@Target

指定了注解可以用于的范圍。有以下取值

ElementType.ANNOTATION_TYPE 可以給一個注解進行注解

ElementType.CONSTRUCTOR 可以給構造方法進行注解

ElementType.FIELD 可以給屬性進行注解

ElementType.LOCAL_VARIABLE 可以給局部變量進行注解

ElementType.METHOD 可以給方法進行注解

ElementType.PACKAGE 可以給一個包進行注解

ElementType.PARAMETER 可以給一個方法內的參數進行注解

ElementType.TYPE 可以給一個類型進行注解,比如類、接口、枚舉

@Inherited

繼承。如果一個超類引用該注解,則它的子類默認擁有這個超類所具有的的注解

@Repeatable

可以理解為引用了@repeatable的注解可以多次引用同一個注解,多次賦值。

定義

注解通過@interface關鍵字來定義

public  @interface GoodMan {

}

從某種意義上可以講注解是一個tag。

這里我們可以理解為在這定義了一個GoodMan的標簽。

在這個注解里我們可以定義GoodMan具有什么屬性。

應用

在GoodMan中

public @interface GoodMan {

public String personality();

public String quality() default "selfless";

}

注解只有成員變量(無形參的方法申明),沒有方法。上述代碼中定義了quality屬性,并且為它添加了default默認值"kindness"。默認值不可以為null。可以默認設置為""空字符串

如果沒有默認值的話,在使用的時候則需要對它進行賦值。賦值方式是在注解的括號內用value="",多個屬性則用逗號隔開。如果只有一個屬性,則可以直接在括號內寫上value的值,不需要以value=""的形式。

現在一個GoodMan的注解就寫好了,這個注解中,我們申明了兩個屬性:personalityquality。其中給quality一個默認值,所以在接下來我們應用到GoodMan的時候可以不對其進行定義;

@GoodMan(personality = "selfless")
public class Ironman {
}

Ironman中我們應用了注解GoodMan并且對未設置默認值的personality賦了selfless的值。

在本次的例子中,可以這樣講GoodMan是一個"標簽",我們在Ironman上引用這個"標簽",表示Ironman具備GoodMan這個標簽下的屬性,具備個人品質quality是友好kindness。并且為它定義了personality為selfless。

下面講一下本人理解的注解執行的過程:
1.通過@interface定義了一個注解,并在里面添加了我們需要的屬性
2.在我們需要的地方@注解名(屬性值)來引用我們的注解

但是這兩個步驟中需要有橋梁,只是單純的應用這個注解,對于我們的代碼沒有任何作用。

此時反射注解處理器就登場了。
反射(Reflect):程序運行時獲取注解的值,@Retention設置為RUNTIME。則需要在注解中引用@Retention(RetentionPolicy.RUNTIME)
注解處理器(AbstractProcessor):編譯時獲取注解的值,@Retention的值為CLASS。則需要在注解中引用@Retention(RetentionPolicy.CLASS)

反射
注解需要定義的有運行時間,作用域。而作用域無論是field,method還是construtor都是有getAnnotation來獲取注解的

TIPS

是否包含注解的代碼對于java編譯器來講生成的java虛擬機指令是相同的。

注解從某種意義上來講就是根據所選 處理工具 來識別代碼中的注解。

注解是可重復的,如果注解的編寫者將其申明為可重復的,則可以多次重復使用一個注解。

注解的默認值不能設置為null,注解元素永遠不能為 null。可以使用空字符串"".

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75544.html

相關文章

  • IMI 基于 Swoole 開發的協程 PHP 開發框架 常駐內存、協程異步非阻塞

    摘要:介紹是基于開發的協程開發框架,擁有常駐內存協程異步非阻塞等優點。宇潤我在年開發并發布了第一個框架,一直維護使用至今,非常穩定,并且有文檔。于是我走上了開發的不歸路 showImg(https://segmentfault.com/img/bVbcxQH?w=340&h=160); 介紹 IMI 是基于 Swoole 開發的協程 PHP 開發框架,擁有常駐內存、協程異步非阻塞IO等優點。...

    airborne007 評論0 收藏0
  • APT案例之點擊事件

    摘要:楊充一定時間內該點擊事件只能執行一次用來修飾這是一個什么類型的注解。楊充自定義編譯器獲取遍歷,并生成代碼配置文件文件配置的作用是向系統注冊自定義注解處理器,執行編譯時使用進行處理。 目錄介紹 01.創建項目步驟 1.1 項目搭建 1.2 項目功能 02.自定義注解 03.創建Processor 04.compiler配置文件 05.編譯jar 06.如何使用 07.編譯生成代...

    cyixlq 評論0 收藏0
  • 利用反射和注解,拷貝類型相同,屬性名不同的對象

    摘要:前言最近開發遇到一個問題,兩個對象進行屬性值拷貝。理論上來說可以直接借助來進行拷貝,奈何兩個對象屬性名不同,懵逼臉。 1、前言 最近開發遇到一個問題,兩個對象進行屬性值拷貝。理論上來說可以直接借助org.springframework.beans.BeanUtils.copyProperties(Object source, Object target)來進行拷貝,奈何兩個對象屬性名不...

    forrest23 評論0 收藏0
  • 基于 java 注解的 csv 文件讀寫框架

    摘要:基于注解生成加簽驗簽。是否寫入頭,建議第一次寫入指定,避免中文亂碼指定文件編碼默認不進行字段排序無待寫入的文件列表方法默認值說明必填創建實例,并且指定待讀取文件路徑。 csv 基于 java 注解生成加簽驗簽 csv。 開源地址: github csv) 創作原由 以前覺得 csv 文件的多寫非常簡單,就懶得封裝。 最近一個月寫了兩次 csv 文件相關的東西,發現要處理的細節還是有的,...

    Gemini 評論0 收藏0
  • 基于 java 注解的 csv 讀寫框架更加簡單靈活

    摘要:創作原由以前覺得文件的讀寫非常簡單,就懶得封裝。為了解決上述問題,此框架應運而生。寫入文件其中列表構建構建基于注解的測試列表列表你好生成文件內容名稱生日你好讀取文件測試日志信息你好集合類有時候對象中會包含數組等常見集合。 CSV 基于 java 注解的 csv 讀寫框架。 相關框架 Apache commons-csv super-csv 簡單看了下,這兩個框架提供的特性都非常的基礎。...

    includecmath 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<