什么是枚举,它们为什么有用?

什么是枚举,它们为什么有用?

今天我浏览了一下这个网站上的一些问题,我发现其中提到了enum 用于单例模式关于所谓的线程安全的好处,这样的解决方案。

我从来没有用过enumS和我用Java编程已经有两年多了。显然他们改变了很多。现在,他们甚至在自己的内部完全支持OOP。

现在,为什么和为什么我应该在日常编程中使用枚举?


温温酱
浏览 970回答 3
3回答

慕丝7291255

当变量(特别是方法参数)只能从一小部分可能的值中提取一个时,您应该始终使用枚举。例如类型常量(合同状态:“永久”、“临时”、“学徒”)或标志(“立即执行”、“延迟执行”)。如果使用枚举而不是整数(或字符串代码),则会增加编译时检查,避免错误传入无效常量,并记录哪些值是合法使用的。顺便说一句,过度使用枚举可能意味着您的方法做得太多了(通常最好有几个单独的方法,而不是一个使用多个标志来修改它所做的事情的方法),但是如果您必须使用标志或类型代码,则可以选择枚举。举个例子,哪个更好?/** Counts number of foobangs.  * @param type Type of foobangs to count. Can be 1=green foobangs,  * 2=wrinkled foobangs, 3=sweet foobangs, 0=all types.  * @return number of foobangs of type  */public int countFoobangs(int type)对决/** Types of foobangs. */public enum FB_TYPE {  GREEN, WRINKLED, SWEET,   /** special type for all types combined */  ALL;}/** Counts number of foobangs.  * @param type Type of foobangs to count  * @return number of foobangs of type  */public int countFoobangs(FB_TYPE type)方法调用,如:int sweetFoobangCount = countFoobangs(3);然后变成:int sweetFoobangCount = countFoobangs(FB_TYPE.SWEET);在第二个示例中,可以立即清楚地看到哪些类型是允许的,文档和实现不能不同步,编译器可以强制执行。另外,一个无效的调用,如int sweetFoobangCount = countFoobangs(99);已经不可能了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java