1. 程式人生 > 其它 >JavaScript中filter()方法

JavaScript中filter()方法

Java註解

一,前言

​ 瞭解什麼是註解,掌握三種內建註解,掌握元註解,掌握自定義註解

二,註解的概述

​ 註解(Annotation)其實就是一種標記,但是它本身並不起任何作用,註解處理程式通過捕獲被註解標記的程式碼然後進行一些處理,這就是註解工作的方式。

三,內建註解

​ JavaSE內建了三種註解。

  • @Override

​ 定義在java.lang.Override中,表示宣告是一個重寫父類的方法,並監視驗證方法名稱是否為父類所有。

  • @Deprecated

​ 定義在java.lang.Deprecated中,表示此方法已廢棄、暫時可用,建議不要呼叫此方法。

  • @SuppressWarnings

​ 定義在java.lang.SuppressWarnings中,用來抑制編譯時的警告資訊。

四,元註解

​ 對註解進行註解,也就是對註解進行標記,對註解的行為做出一些限制,例如生命週期,作用範圍等等。(定義在java.lang.annotation中)

1.@Target

​ 用於描述註解的使用範圍。

例項化:

@Target(ElementType.ANNOTATION_TYPE)  
public @interface Target {  
	ElementType[] value();  
}

ElementType類:

public enum ElementType {  
 	TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR,  
 	LOCAL_VARIABLE, ANNOTATION_TYPE,PACKAGE  
}
型別 作用的物件型別
TYPE 類、介面、列舉
FIELD 類屬性
METHOD 方法
PARAMETER 引數型別
CONSTRUCTOR 構造方法
LOCAL_VARIABLE 區域性變數
ANNOTATION_TYPE 註解
PACKAGE
TYPE_PARAMETER 1.8之後,泛型
TYPE_USE 1.8之後,除了PACKAGE之外任意型別

2.@Retention

​ 描述註解的生命週期,表示什麼級別時註釋存在。

例項化:

@Retention(RetentionPolicy.RUNTIME)
public @interface Retention {  
	RetentionPolicy value();  
}

RetentionPolicy類:

public enum RetentionPolicy {  
	SOURCE,  
	CLASS,  
	RUNTIME  
}
型別 作用
SOURCE 註解只在原始碼階段保留,在編譯器進行編譯的時候這類註解被抹除,常見的@Override就屬於這種註解
CLASS 註解在編譯期保留,但是當Java虛擬機器載入class檔案時會被丟棄,這個也是@Retention的「預設值」。@Deprecated和@NonNull就屬於這樣的註解
RUNTIME 註解在執行期間仍然保留,在程式中可以通過反射獲取,Spring中常見的@Controller、@Service等都屬於這一類

3.@Documented

​ 將註解的元素加入Javadoc中。

4.@Inherited

​ 說明子類可繼承父類中的該註解。

5.@Repeatable

​ 表示該註解可以重複標記。

五,自定義註解

​ 使用@interface自定義註解時,自動繼承了java.lang.annotation.Annotation介面。

  • @interface用來宣告一個註解
  • 方法名稱就是配置引數
  • 通過default宣告引數的預設值
  • 如果只有一個引數,通常引數名為value

例:

@Retention(RetentionPolicy.RUNTIME)
public @interface PrintMsg {
    int count() default 1;
    String name() default "my name is PrintMsg";
}

@PrintMsg(count = 2020)
public class AnnotationTest {
    public static void main(String[] args) {
        //通過反射獲取該註解
        PrintMsg annotation = AnnotationTest.class.getAnnotation(PrintMsg.class);
        System.out.println(annotation.count());
        System.out.println(annotation.name());
    }
}

輸出如下:

2020
my name is PrintMsg