枚举vs int标志?

aho*_*der 1 java int enumeration

只是想就此事提出一些意见.我一直使用int标志,如果我在Java中使用枚举,只是对可能的易用性表现感到好奇吗?

Jon*_*eet 12

我非常怀疑你会看到性能优势 - 在某些情况下甚至会有性能损失,具体取决于你如何使用它们.我怀疑它们是否具有重要意义.

好处不在于性能 - 它是用语言表达或更清楚地表达您的意图,从而产生更易读(和类型安全)的代码.例如,对于整数标志,如果您尝试在方法调用中使用(比方说)HTTP_STATUS_UNAUTHORIZED作为文件共享模式的值,则不会抱怨...如果两者都是枚举,则参数将被强类型化为真正的只允许文件共享模式(或者假设您正在谈论Java ,则为null ).


Sea*_*oyd 6

像往常一样,Effective Java说得最好:

使用int枚举模式的程序很脆弱.因为int 枚举是编译时常量,所以它们被编译到使用它们的客户端中.如果int更改了与枚举常量关联的内容,则必须重新编译其客户端.如果他们不是,他们仍然会运行,但他们的行为将是不确定的.

没有简单的方法将int枚举常量转换为可打印的字符串.如果您打印这样的常量或从调试器显示它,您所看到的只是一个数字,这不是很有用.没有可靠的方法来迭代组中的所有int枚举常量,甚至无法获得int枚举组的大小.

(还有10页以上的枚举更好:-))

来源: 第30项:使用枚举而不是int常量


Car*_*ter 5

枚举更清楚地表达了您要做的事情.使用它们,不要担心性能; 性能影响可以忽略不计.