亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 8注解語法有哪些

發布時間:2021-12-21 16:53:25 來源:億速云 閱讀:176 作者:iii 欄目:編程語言

這篇文章主要講解了“Java 8注解語法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java 8注解語法有哪些”吧!

注解語法

注解由字符 @ 和注解名組成,即 @AnnotationName。當編譯器發現這個語法該元素時,會把它解析為注解。例如:

@ExampleAnnotation
public class SampleClass {
}

上面的注解稱為 ExampleAnnotation,標記在 SampleClass 上。

注解可以包含屬性,在聲明注解時以鍵值對的形式給出。例如: 

@ExampleAnnotation(name = ”first name”, age = 
35)
public void simpleMethod() {
}

請注意,這里 ExampleAnnotation 是一個方法注解。如果注解只包含一個屬性,在聲明注解時可以忽略屬性名。示例如下:

@ExampleAnnotation(“I am the only property”)
public void simpleMethod() {
}

一個元素可以使用多個注解。比如下面這個示例:

@Annotation1
@Annotation2(“Another Annotation”)
public class SimpleClass {
}

從 J2SE 8 開始,可以為同一個元素多次使用相同的注解,例如:

@ExampleAnnotation(“Annotation used”)
@ExampleAnnotation(“Annotation repeated”)
public class SimpleClass {
}

在 @Repeatable 部分會對此進行詳細地討論。

Java 預定義注解

Java 支持一組預先定義好的注解。下面介紹了Java Core 中提供的注解:

@Retention:

  • SOURCE:注解僅在源代碼中可用。編譯器和 JVM 會忽略此注解,因此在運行時不可用;

  • CLASS:編譯器會處理該注解,但 JVM 不會處理,因此在運行時不可用;

  • RUNTIME:JVM 會處理該注解,可以在運行時使用。

@Target:

  • ANNOTATION_TYPE:可修飾其他注解;

  • CONSTRUCTOR:可以修飾構造函數;

  • FIELD:可以修飾字段或屬性;

  • LOCAL_VARIABLE:可以修飾局部變量;

  • METHOD:可以修飾 method;

  • PACKAGE:可以修飾 package 聲明;

  • PARAMETER:可以修飾方法參數;

  • TYPE:可以修飾 Class、Interface、Annotation 或 enum 聲明;

  • PACKAGE:可以修飾 package 聲明;

  • TYPE_PARAMETER:可以修飾參數聲明;

  • TYPE_USE:可以修飾任何類型。

@Documented:@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.TYPE_USE)
@Repeatable (RepeatableAnnotationContainer.class)
public @interface RepeatableAnnotation() {
   String values();
}

RepeatableAnnotation可以重復修飾元素。

接下來,定義 RepeatableAnnotationContainer注解類型。這是一個注解類型容器,包含一個 RepeatableAnnotation 類型的數組。

public @interface RepeatableAnnotationContainer {
   RepeatableAnnotation [] value();
}

現在,Repeatable 可以元素進行多次注釋。

@RepeatableAnnotation (“I am annotating the class”)
@RepeatableAnnotation (“I am annotating the class again”)
@RepeatableAnnotation (“I am annotating the classfor the third time”)
publicclass RepeatedAnnotationExample {function(){   //外匯跟單www.gendan5.com}

在程序中要獲取注解中的值,先要獲取容器中的數組,數組的每個元素將包含一個值。例如:

@RepeatableAnnotation (“I am annotating the 
class”)
@RepeatableAnnotation (“I am annotating the class again”)
@RepeatableAnnotation(“I am annotating the class for the third time”)
public class RepeatableAnnotationExample {
   public static void main(String [] args) {
       Class object = RepeatableAnnotationExample.class
       Annotation[] annotations = object.getAnnotations();
for (Annotation annotation : annotations) {
   RepeatableAnnotationContainer rac = (RepeatableAnnotationContainer) annotation;
   RepeatableAnnotation [] raArray = rac.value();
   for (RepeatableAnnotation ra : raArray) {
       System.out.println(ra.value);
   }
}
}
}

執行結果:

I am annotating the 
class
I am annotating the class again
I am annotating the class for the third time.

類型注解

Java 8發布后,注解可以用于任何類型(Type),這意味著只要可以使用類型的地方就能使用注解。例如,使用新運算符創建類實例、類型轉換、用 implements 實現接口、拋出異常等,這種注解稱為類型注解。 

這種注解能夠幫助分析與改進 Java 程序,提供更強大的類型檢查。Java 8發布前,Java 沒有提供類型檢查框架。但是通過類型注解可以開發類型檢查框架,對 Java 程序進行檢查。

舉例來說,假設我們希望特定變量在程序執行過程中始終不為 null。可以編寫一個自定義插件 NonNull,并為特定變量加上該注解進行檢查。變量聲明如下:

@NonNull String notNullString;

編譯代碼時,如果發現任何可能將變量賦值為 null 的代碼,編譯器會檢查潛在問題并給出告警。

自定義注解

Java 允許程序員自定義注解。自行定義注解的語法:

public @interface CustomAnnotation { }

上面的代碼會創建一個 CustomAnnotation新注解。@Interface 關鍵字可用于自定義注解。

自定義注解時,必須設置兩個必填屬性。可以在定義中增加其他屬性,但這兩個重要屬性是必需的,即@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.ELEMENT)
public @interface CustomAnnotation {
   public String name() default “Mr Bean”;
   public String dateOfBirth();
}

上面的自定義注解中,Retention Policy 為 RUNTIME,這表明該注解可以在 JVM 運行時使用;Target 設為 ELEMENT,表示該注解可以修飾任何元素與類型。 

此外,它還具有兩個屬性:name 與 dateOfBirth。其中,name 屬性默認值為 Mr Bean, dateOfBirth 沒有默認值。

注意,聲明的 Method 沒有帶任何參數以及 throws 語句。此外,返回類型僅限于 String、class、enum、注解以及上述類型的數組。

現在,可以像下面這樣使用自定義注解:

@CustomAnnotation (dateOfBirth = “1980-06-25”)
public class CustomAnnotatedClass {
}

同樣,可以使用 @Target(ElementType.METHOD) 創建自定義注解修飾 method。

獲取注解及屬性

Java Reflection API 提供了幾種方法,可以在運行時中從 class、method 和其他元素中獲取注解。 

AnnotatedElement接口定義了所有的方法,其中最重要的一個是:

  • getAnnotations(): 返回指定元素的所有注解,包括定義元素時未明確寫出的注解。

  • isAnnotationPresent(annotation): 檢查注解在當前元素上是否可用。

  • getAnnotation(class): 獲取 class 參數使用的注解,如果參數不存在注解返回 null。

這個 class 支持 java.lang.Class、java.lang.reflect.Method 和 java.lang.reflect.Field,基本上可以適用任何的 Java 元素。

下面的示例程序展示了如何獲取自定義注解的相關信息:

public static void main(String [] args) {
Class object = CustomAnnotatedClass.class;
// 從類中獲取所有注解
Annotation[] annotations = object.getAnnotations();
for( Annotation annotation : annotations ) {
System.out.println(annotation);
}
// 檢查是否存在注解
if( object.isAnnotationPresent( CustomAnnotationClass.class ) ) {
// 獲取需要的注解
Annotation annotation = object.getAnnotation(CustomAnnotationClass.class) ;
System.out.println(annotation);
}
// 獲取注解屬性
for(Annotation annotation : annotations) {
System.out.println(“name: “ + annotation.name());
System.out.println(“Date of Birth: “+ annotation.dateOfBirth());
}
// 對所有方法執行相同的操作
for( Method method : object.getDeclaredMethods() ) {
if( method.isAnnotationPresent( CustomAnnotationMethod.class ) ) {
Annotation annotation = method.getAnnotation(CustomAnnotationMethod.class );
System.out.println( annotation );
}
}
}

感謝各位的閱讀,以上就是“Java 8注解語法有哪些”的內容了,經過本文的學習后,相信大家對Java 8注解語法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柏乡县| 武强县| 天长市| 诸暨市| 卫辉市| 承德县| 莎车县| 井冈山市| 逊克县| 新河县| 黄石市| 贺兰县| 大悟县| 开原市| 德庆县| 英山县| 沧源| 巴东县| 夹江县| 浮梁县| 德阳市| 施秉县| 朔州市| 龙胜| 西安市| 潜江市| 龙江县| 和政县| 上蔡县| 蚌埠市| 高雄县| 淮阳县| 华坪县| 梅河口市| 游戏| 大竹县| 恭城| 诸暨市| 沅陵县| 平和县| 区。|