1. 程式人生 > 實用技巧 >Java多執行緒之執行緒池配置合理執行緒數

Java多執行緒之執行緒池配置合理執行緒數

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

註解

一.認識註解

234603_zeCl_2336969.png

1註解(Annotation):Java5開始,Java對元資料開始支援,就是這裡的註解

註解是來自java.lang.annotation.Annotation,

自定義的註解是實現了該介面的,所以所有的註解都是特殊的介面

列舉是特殊的類

2註解,Annotation,標籤指的是相同的事物

3使用註解需要三方面參與才有意義:

1.有一個註解

2.要有別貼的程式元素(,方法,欄位)

3.第三方程式賦予註解特殊的含義

二.JDK中的註解

JDK內建的註解:Java為我們定義好的註解

[email protected] 限定覆寫父類方法

[email protected]標記已過時的成員,不推薦使用.

註解是從Java5開始的,Date中很多成員都是從JDK1.1就已經過時了,在這個時候是如何來表示過時的成員?

Java5之前是使用文件註釋來標識過時的成員

/**

*@Deprecated

/

[email protected]抑制編譯器發出的警告

只是抑制編譯器發出的警告,但是問題任然存在

@SuppressWarnings({"all"}):抑制所有型別的警告

[email protected]抑制堆汙染警告(Java7

開始出現的)

堆汙染:當一個方法中使用了可變引數和泛型,可能出現該警告

三.JDK內建的元註解

元註解:註解的註解

註解:用來表示程式元素

@Target:表示註解可以貼在哪些位置(,方法上,構造器上等等).

位置的常量封裝在ElementType列舉類中:

ElementType.ANNOTATION_TYPE只能修飾Annotation

ElementType.CONSTRUCTOR只能修飾構造方法

ElementType.FIELD只能修飾字段(屬性),包括列舉常量

ElementType.LOCAL_VARIABLE只能修飾區域性變數

ElementType.METHOD只能修飾方法

ElementType.PACKAGE只能修飾包(極少使用)

ElementType.PARAMETER只能修飾引數

ElementType.TYPE只能修飾類,介面,列舉

@Retention:表示註解可以儲存在哪一個時期.

儲存的時期的值,封裝在RetentionPolicy列舉類中

CLASS

編譯器將把註釋記錄在類檔案中,但在執行時VM不需要保留註釋。

RUNTIME

編譯器將把註釋記錄在類檔案中,在執行時VM將保留註釋,因此可以反射性地讀取

SOURCE

編譯器要丟棄的註釋

注意:以後我們自定義的註解,應該儲存到哪個時期?--->RUNTIME

@Documented:使用@Documented標註的標籤會儲存到API文件中.

@Inherited:@Inherited標註的標籤可以被子類整合到.


@Inherited

public@intefaceMyAnn{}

@MyAnn

publicclassA{}

publicclassBextendsA{}

四.自定義註解

1.定義註解使用@interface

@Target({ElementType中的元素})

@Retention(RetentionPolicy.RUNTIME)

public@interface註解名稱{

Stringname()default"lucy";//在註解中稱之為屬性,元素

intage()default12;

Stringvalue();//屬性名是value的時候,那麼在使用的時候,如果只指定value的值,那麼屬性名可以省略,直接寫屬性值

}

InvalidtypeIntegerfortheannotationattributeMyAnno.age;onlyprimitivetype,String,Class,annotation,enumerationarepermittedor1-dimensionalarraysthereof

註解中的屬性的型別只能是基本資料型別,String,Class,annotation,列舉,一維陣列

235126_3r3V_2336969.png

2.使用註解:

@註解名詞,但是隻能貼在哪裡收到Taget裡面定義內容的限制。@Test

---------------------------------------------------------------------------

3.獲取註解:

因為在類上,方法上,欄位都可能會有註解,那麼在這些成員上面就應該有操作註解的方法

Class:

booleanisAnnotationPresent(Class<?extendsAnnotation>annotationClass)

Method:

<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass)

Field:

<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass)

其實我們大多數時候都是使用別人定義好的註解,自己動手定義註解的機會相對比較少。註解在一些框架中應用的比較多,比如:Junit4


轉載於:https://my.oschina.net/byronhs/blog/640420