JAVA基礎20-註解
阿新 • • 發佈:2018-12-22
註解
沒有元素的註解 被稱為標記註解
Java.Lang中的三個註解:
@Override,表示當前的方法定義,將覆蓋超類中的方法。
@Deprecated,讓編譯器做出警告
@SuppressWarnings:關閉某些警告
1.元註解
元註解:負責解釋其他註解的註解。
1-1. @Documented
能夠將註解中的元素包含到 Javadoc 中去。
1-2. @Target
@Target 指定了註解運用的地方。
當一個註解被 @Target 註解時,這個註解就被限定了運用的場景。
@Target 有下面的取值
ElementType.ANNOTATION_TYPE 可以給一個註解進行註解
ElementType.CONSTRUCTOR 可以給構造方法進行註解
ElementType.FIELD 可以給屬性進行註解
ElementType.LOCAL_VARIABLE 可以給區域性變數進行註解
ElementType.METHOD 可以給方法進行註解
ElementType.PACKAGE 可以給一個包進行註解
ElementType.PARAMETER 可以給一個方法內的引數進行註解
ElementType.TYPE 可以給一個型別進行註解,比如類、介面、列舉
1-3. @Inherited
允許子類繼承父類的註解
//定義註解
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface Test {}
//Test註解作用在A中
@Test
public class A {}
//B繼承A
public class B extends A {}
註解 Test 被 @Inherited 修飾,之後類 A 被 Test 註解,類 B 繼承 A,類 B 也擁有 Test 這個註解。
1-4. @Retention
表示需要在什麼級別儲存註解
引數:
Source:註解將被編譯器丟棄
class:註解在Class檔案中可用,但會被JVM丟棄
runtime:允許時仍保留此註解,可通過反射機制獲取該註解的資訊
[email protected]
Repeatable 標記的註解可以多次應用於相同的宣告或型別使用【Java 1.8 】
//Repeats.java檔案下(類似集合) package com.demo9aa.demo5; import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target({ElementType.TYPE,ElementType.METHOD}) public @interface Repeats { Repeat[] value(); } //Repeat.java檔案下 package com.demo9aa.demo5; import java.lang.annotation.Repeatable; @Repeatable(value=Repeats.class) public @interface Repeat { String value(); } //Demo.java 實驗程式碼 package com.demo9aa.demo5; public class Demo { @Repeat("df") @Repeat("15") public void sd(){ } }
2.如何定義一個註解
2-1:語法
public @interface 註解名{註解體}
//註解不接受extends關鍵字,不支援繼承
2-2 註解元素
僅僅能包括如下幾個型別,否則編譯器會報錯
1.所有基本資料型別
2.Annotation
3.enum
4.String
5.以上型別的陣列