Android在这种情况下应不应该使用枚举

问题背景:
我们假设这样一种需求,需要在程序运行中,根据不同的网络请求错误显示不同的错误码(errorCode),有的时候还要把错误信息(errorMsg)记入日志。那么认为errorCode和errorMsg存在一对一的映射,所以自然想到利用一个枚举类型表示:
public class enum{

A("1001","errorMsg1"),
B("1002","errorMsg2"),
C("1003","errorMsg3"),
D("1004","errorMsg4"),
...;

//属性声明(都是字符串)
public String errorCode;
public String errorMsg;

//构造方法略

}
我的问题:
枚举的开销是比较大的,现在程序需要最大限度节省手机内存还要保证代码的优雅。
但是我并不知道对于String保存类型的数据,用不用枚举的差别是否很大?(我的枚举大约会有20项)。
如果真的要避免使用枚举,那么如何在保证代码优雅的基础上实现这种需求(期望程序员只需要在某种错误情况下把代表错误的枚举变量保存起来,而不需要关心内部errorCode和errorMsg的映射关系)

6个回答

这个code其实无所谓,可以是枚举,也可以是hashmap。

u014342984
xia小白 回复guwei4037: 能量化一下吗,比如100条枚举项的情况下,使用枚举会多增加多少内存体积。谢谢。
接近 5 年之前 回复
guwei4037
极简吧 回复xia小白: 这没有什么开销,你的code才多少条记录啊?
接近 5 年之前 回复
u014342984
xia小白 hashmap内存代价会不会更大,有什么好的实现方法?
接近 5 年之前 回复

hashmap内存代价会不会更大,有什么好的实现方法

搞笑了 者应该用 多个数组来保存

stringsdn
千本摩的 突然发现 errorMsg1 有什么用? 竟然有errorCOde了 errorMsg 就无用了。errorCode 不就是为了简要记载错误的么?还需要errormsg 做什么?你只是计入日志 又不需要展示给用户看 。对应关系写在文档里就行。 你就用很多常量来表示错误码就行
接近 5 年之前 回复
u014342984
xia小白 能具体一些吗
接近 5 年之前 回复
u014342984
xia小白 能具体一些吗
接近 5 年之前 回复

能量化一下吗,比如100条枚举项的情况下,使用枚举会多增加多少内存体积。谢谢。

用数组或hashmap

当枚举(enum)成为静态常量时超过正常两倍以上的内存开销, 在 android 中你需要严格避免使用枚举

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问