android 列舉型別 替換之道

2021-08-07 13:12:04 字數 1053 閱讀 7652

jdk 1.5版本開始支援列舉型別,列舉型別使用關鍵字enum定義。

如果我們使用列舉型別來定義常量,會使**更加易讀並且安全,但效能上會差很多。列舉型別比普通常量型別的dex size 大 12倍以上(dex code 變大),執行時記憶體分配,乙個enum值的宣告會消耗20bytes以上,還不包括物件陣列保持對enum值的引用。專案中大量使用enum,對記憶體影響不可忽視。

public classcat 

publicstring get***des()else if(***== 1)else

}}

引入依賴包

compile'com.android.support:support-annotations:22.0.0'
public classcat )

@retention(retentionpolicy.source)

public@inte***ce***

private int***;

public voidset***(@***

int***)

publicstring get***des()else if(***== 1)else

}}

@***註解可以放到屬性定義,引數,返回值等地方對資料型別進行限制。如果隨便賦值乙個其他int引數給set***(),ide會直接報錯

擴充套件型別 列舉型別

擴充套件型別 型別別名 列舉 介面 類。在型別約束位置,會產生重複 可以使用型別別名解決該問題 邏輯含義和真實的值產生了混淆,會導致修改真實的值的時候,產生大量的修改 字面量型別不會進入到編譯結果,比如我們想迴圈便利它的值,那麼就不行。所以需要使用列舉 enum gender gender.male...

使用列舉型別的值建立列舉型別

列舉型別中不僅可以宣告列舉的名稱,還可以加入附加的值如下式 public static enum pushtype public string tostring 其中push type sys稱為列舉的name,0則為列舉型別的value,那如何才能根據列舉型別的value獲取列舉型別的例項呢?見下...

C 列舉型別

c 中的列舉型別繼承於 c 語言。就像其他從 c 語言繼承過來的很多特性一樣,c 列舉也有缺點,這其中最顯著的莫過於作用域問題 在列舉型別中定義的常量,屬於定義列舉的作用域,而不屬於這個列舉型別。例如下面的示例 enum fileaccess fileaccess access read 正確 fi...