Android之使用列舉利弊及替代方案

2021-10-10 08:57:04 字數 1292 閱讀 9561

android之使用列舉利弊及替代方案

android上不應該使用列舉,佔記憶體,應該使用@***def註解來替代
使用 enum 的缺點

每乙個列舉值都是乙個物件,在使用它時會增加額外的記憶體消耗,所以列舉相比與 integer 和 string 會占用更多的記憶體。

較多的使用 enum 會增加 dex 檔案的大小,會造成執行時更多的開銷,使我們的應用需要更多的空間。

如果你的應用使用很多的 enum ,最好使用integer 或 string 替代他們,但是這樣還會有問題。

既然都說到這個份上了,那麼有什麼比較好的解決方法呢?

public class ***test

private *** ***;

//設定性別

public void set***(*** ***)

//獲取性別

public string get***()

public static void main(string args)

解決方案

既然是因為引數的型別太泛了造成的型別不安全,那麼我只要將引數限定在某乙個型別集合裡面,不就大功告成了?!

是滴,一下就是要將的@intdef/@stringdef + @inte***ce來進行限定引數。

首先你要在build.gradle檔案中新增依賴

dependencies
然後再使用,**如下:

public class mainactivity extends activity 

class person

@***

public int get***()

public string get***des() else

}}@intdef()

@retention(retentionpolicy.source)

public @inte***ce ***

}

如果我們嘗試在呼叫set***()方法的時候,傳入不在限定之內的值,那麼編譯就不會通過,有錯誤提示。同理,我們也可以使用@stringdef。

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

**自

Android之使用列舉利弊及替代方案

android上不應該使用列舉,佔記憶體,應該使用 def註解來替代 每乙個列舉值都是乙個物件,在使用它時會增加額外的記憶體消耗,所以列舉相比與 integer 和 string 會占用更多的記憶體。較多的使用 enum 會增加 dex 檔案的大小,會造成執行時更多的開銷,使我們的應用需要更多的空間...

Android 種使用 intdef 代替 列舉

android 種的列舉 enum 1.enum 列舉型別,用於事先定義一些值,和可以說將某種型別限定範圍,在寫 或編譯時用於查錯。用列舉型別作為引數,可以將引數值限定在一定範圍之內,避免不必要的錯誤。替代列舉 1.新增對support annotations的依賴。2.舉例 public clas...

Android 廣播使用及案例

普通廣播也是如此操作 oncreate 註冊 private void doregisternetbc ondestroy 取消註冊 private void dounregisternetbc public class networkconnectchangedreceiver extends b...