日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java注释类型_Java 8类型注释

發(fā)布時(shí)間:2023/12/3 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java注释类型_Java 8类型注释 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java注釋類型

Lambda表達(dá)式是迄今為止Java 8討論最多和最受促進(jìn)的功能。雖然我同意Lambda是一個(gè)很大的改進(jìn),但我認(rèn)為其他一些Java 8功能由于Lambda的炒作而有所欠缺。 在這篇文章中,我想展示另一個(gè)來自Java 8的出色特性的示例:Type Annotations。

類型注釋是可以放置在使用類型的任何位置的注釋。 這包括new運(yùn)算符,類型強(qiáng)制轉(zhuǎn)換,Implements子句和throws子句。 類型注釋可以改進(jìn)對(duì)Java代碼的分析,并可以確保更強(qiáng)大的類型檢查。

在源代碼中,這意味著我們獲得了兩個(gè)用于注釋的新ElementType:

@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER}) public @interface Test { }

枚舉值TYPE_PARAMETER允許在類型變量(例如MyClass <T>)上應(yīng)用注釋。 目標(biāo)TYPE_USE的注釋可以應(yīng)用于任何類型的使用。

請(qǐng)注意,發(fā)布Java 8時(shí),以下示例的注釋將無法立即使用。 Java 8僅提供定義這些注釋類型的功能。 然后由框架和工具開發(fā)人員實(shí)際使用它。 因此,這是將來可能為我們提供的注釋框架的集合。 大多數(shù)示例取自“ 類型注釋”規(guī)范和各種Java 8演示。

具有類型注釋的簡(jiǎn)單類型定義如下所示:

@NotNull?String?str1?=?... @Email?String?str2?=?... @NotNull?@NotBlank?String?str3?=?...

類型注釋也可以應(yīng)用于嵌套類型

Map.@NonNull?Entry?=?...

具有類型注釋的構(gòu)造函數(shù):

new?@Interned?MyObject() new?@NonEmpty?@Readonly?List<String>(myNonEmptyStringSet)

它們也與嵌套(非靜態(tài))類構(gòu)造函數(shù)一起工作:

myObject.new?@Readonly?NestedClass()

類型轉(zhuǎn)換:

myString?=?(@NonNull?String)?myObject; query?=?(@Untainted?String) str;

遺產(chǎn):

class?UnmodifiableList<T>?implements?@Readonly?List<T>?{?...?}

我們可以將類型注釋與泛型類型參數(shù)一起使用:

List<@Email?String>?emails?=?... List<@ReadOnly?@Localized?Message>?messages?=?... Graph<@Directional?Node>?directedGraph?=?...

當(dāng)然,我們可以嵌套它們:

Map<@NonNull?String,?@NonEmpty?List<@Readonly?Document>>?documents;

或?qū)⑺鼈儜?yīng)用于交集類型:

public?<E?extends?@ReadOnly?Composable<E>?&?@Localized?MessageSource>?void?foo(...)?{?...?}

包括參數(shù)范圍和通配符范圍:

class?Folder<F?extends?@Existing?File>?{?...?} Collection<??super?@Existing?File>?c?=?... List<@Immutable???extends?Comparable<T>>?unchangeable?=?...

具有類型注釋的泛型方法調(diào)用如下所示:

myObject.<@NotBlank?String>myMethod(...);

對(duì)于泛型構(gòu)造函數(shù),注釋遵循顯式類型參數(shù):

new?<String>?@Interned?MyObject()

拋出異常:

void?monitorTemperature()?throws?@Critical?TemperatureException?{?...?} void?authenticate()?throws?@Fatal?@Logged?AccessDeniedException?{?...?}

在instanceof語句中鍵入注釋:

boolean?isNonNull?=?myString?instanceof?@NonNull?String; boolean?isNonBlankEmail?=?myString?instanceof?@NotBlank?@Email?String;

最后是Java 8方法和構(gòu)造函數(shù)參考:

@Vernal?Date::getDay List<@English?String>::size Arrays::<@NonNegative?Integer>sort

結(jié)論

類型注釋是對(duì)Java類型系統(tǒng)的有趣補(bǔ)充。 它們可以應(yīng)用于任何類型的使用,并可以進(jìn)行更詳細(xì)的代碼分析。 如果要立即使用Type批注,則應(yīng)查看Checker Framework 。

參考:來自我們的JCG合作伙伴 Michael Scharhag的Java 8類型注釋 ,位于mscharhag,Programming and Stuff博客中。

翻譯自: https://www.javacodegeeks.com/2014/02/java-8-type-annotations.html

java注釋類型

總結(jié)

以上是生活随笔為你收集整理的java注释类型_Java 8类型注释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。