android 接口定义常量,Android开发笔记(5):常量的合理使用
今天,我們來聊一些“細枝末節”的問題——java中的常量。覺得很有意思,給大家分享一下:
下面是我見過的幾種常量定義操作:
1.普通款:
public class Constants {
private Constants(){}
public static final int MAX = Integer.MAX_VALU;//最大值
public static final int MIN = Integer.MIN_VALU;//最小值
}
最簡單的一種,需要定義成final且定義一個private的構造方法,這樣做是為了不讓其他類繼承,禁止實例化此類,調用時直接以"類.常量"的方式調用。
當然,大部分時候,我們都放在相關的類里,而不是單獨抽取出來。
2.接口
public interface Constants {
int MAX = Integer.MAX_VALUE;//最大值
int MIN = Integer.MIN_VALU;//最小值
}
接口中定義,接口中的"變量"默認都是 "public static final"類型,即為常量,因此接口可以省略。
3.枚舉款(這個詳細說一下)
假設服務端下發了一個“tag”字段,1代表通過,2代表不通過,3代表延期審核。枚舉可以這樣用:
public enum Constants {
PASS(1),NOPASS(2),DELAY(3);
private final int state;
Constants(int state){
this.state = state;
}
public int getstate() {
return state;
}
}
//使用
...
if (getUserState() == Constants.PASS.getstate()) {
//此人審核未通過
}
他的優點有啥呢?
(1)枚舉常量更簡單
枚舉只需要定義每個枚舉項,不需要定義枚舉值。
(2)枚舉常量屬于穩態型
以上面的代碼舉例:得到數據以后getUserState(),普通常量,你需要判斷邊界值,比如獲取的值為-1就會出現很多問題。而枚舉只能是其中一個實例。
(3)擴展性強
有一天產品告訴你,現在需要根據狀態相應顏色,分別是“紅色”、“藍色”、“白色”。
那么只要稍微改一下代碼就完事了。
public enum Constants {
PASS(1,Colors.red),NOPASS(2,Colors.buld),DELAY(3,,Colors.red);
private final int state;
private final int color;
Constants(int state,int color){
this.state = state;
this.color =cor
}
public int getcolor() {
return color;
}
}
方法實現接口,demo(@Contract.Type int action) 用注解標明方法使用常量,增加了常量與方法的關聯感
(4)注解款
@IntDef({SELECT_ACHIEVEMENT, SELECT_TASK, SELECT_MEMBER, SELECT_BUY})
@Retention(RetentionPolicy.SOURCE)
@interface SelectBuyType {
}
總結
以上是生活随笔為你收集整理的android 接口定义常量,Android开发笔记(5):常量的合理使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript之常用方法讲解
- 下一篇: hadoop MultipleInput