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

2021-09-07 16:51:33 字數 1352 閱讀 2700

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

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

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

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

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

1

public

class

***test67

private

*** ***;8//

設定性別

9public

void

set***(*** ***)

1213

//獲取性別

14public

string get***()

1920

public

static

void

main(string args)

28 }

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

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

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

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

public

class

mainactivity extends activity

class

person

@***

public

intget***()

public

string get***des()

else

}}@intdef()

@retention(retentionpolicy.source)

public

@inte***ce ***

}

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

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

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

android之使用列舉利弊及替代方案 android上不應該使用列舉,佔記憶體,應該使用 def註解來替代使用 enum 的缺點 每乙個列舉值都是乙個物件,在使用它時會增加額外的記憶體消耗,所以列舉相比與 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...