註解相關

 

經過註解限定參數類型

首先了解註解的概念。
註解:給程序中的元素(類,方法,字段)添加註釋。
元註解:註解的註解稱爲元註解,來看下常見的元註解有數組

@Retention
指示註解內容要保留多久。默認爲 RetentionPolicy.CLASS。
RetentionPolicy 是枚舉類,定義了三種保留策略。this

SOURCE
僅在源碼階段保留,編譯時會丟棄註解。
CLASS
Class文件中,編譯器將把註解記錄在類文件中,但在運行時虛擬機 不須要保留註解。
RUNTIME
運行時,編譯器將把註解記錄在類文件中,在運行時虛擬機將保留註解,所以能夠反射性地讀取。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
/**
* 返回保留策略
*/
RetentionPolicy value();
}

@Target
註解目標類型,指示註解所適用的程序元素的類型。
經常使用的程序元素類型(ElementType)有:.net

TYPE
類、接口(包括註釋類型)或枚舉聲明
FIELD
字段(包括枚舉常量)
METHOD
方法
PARAMETER
參數
CONSTRUCTOR
構造方法
ANNOTATION_TYPE
註釋類型
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
/**
* 返回可應用註解的元素類型的數組
*/
ElementType[] value();
}

當須要定義固定的幾種狀態值時,能夠使用枚舉或者註解,下面使用註解來表示加載數據的狀態。blog

使用註解@IntDef限定其值必須爲顯式聲明常量之一。接口

/**
* 經過註解限定類型
* LOADING 加載中
* CONTENT 加載完成,顯示內容
* EMPTY 加載完成,數據爲空
* ERROR 加載出錯
*/
@IntDef(value = {StateType.LOADING, StateType.CONTENT, StateType.EMPTY, StateType.ERROR})
@Retention(RetentionPolicy.SOURCE)
public @interface StateType {
int LOADING = 1;
int CONTENT = 2;
int EMPTY = 3;
int ERROR = 4;
}

定義好值以後,就能夠使用註解限定參數類型,這樣能夠避免傳入限定之外的值。get

private int state = StateType.CONTENT;
private void setState(@StateType int state) {
this.state = state;
}
————————————————
版權聲明:本文爲CSDN博主「JoeLittleStar」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/zhouxinxin250/article/details/98774293編譯器

相關文章
相關標籤/搜索