您好,登錄后才能下訂單哦!
能解決
1.類或方法強制使用者傳入預設的值
2.性能相對常量更好 - (Android環境除外)
使用辦法
public enum ColorEnum{
WHITE("0x000001"),BLACK("0x000002"),GREEN("0x000003");
private final String color;
private ColorEnum(String color){
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
和類的區別
枚舉是真正的 final,客戶端不允許創建枚舉類的實例,也不能對其進行拓展
public class Color {
public static final Color WHITE = new Color(),
BLACK = new Color(),
GREEN = new Color();
private Color() { }
}
和常量的區別
1) 無法限制開發員繼承/實現接口. (枚舉是final的構造方法是私有的)
2) 常量作為參數時,是String,int等弱類型,開發員傳入沒有在常量接口里定義的值,這個問題無法通過編譯器發現.
(常量無法 限制開發人員傳入的參數數值,而枚舉可以在編譯階段強制要求開發人員傳入規定數值)
3) 由于開發員可以直接寫常量值, 所以不能用==對比,只能用equals對比,不能優化性能
(枚舉 equals 也會轉化為 == 可參考 https://www.cnblogs.com/xiohao/p/7405423.html )
4) 編譯時,是直接把常量的值編譯到類的二進制代碼里,常量的值在升級中變化后,需要重新編譯所有引用常量的類,因為里面存的是舊值. (常量是裝載的時候放入堆里,如果發生變化,需要重新編譯裝載)
參考:
https://www.cnblogs.com/kailejun/p/6624471.html
https://blog.csdn.net/lishuangling21/article/details/71398925
https://blog.csdn.net/hzy38324/article/details/72566678
Android中枚舉情況:
https://www.cnblogs.com/zgz345/p/5871351.html
Android中枚舉替代方案
https://www.jianshu.com/p/f8ac84a3e3c1
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。