好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
什么是枚举,枚举为什么很有用? 关闭 返回上一级  

什么是枚举,枚举为什么很有用?
+ 查看更多

发布日期:2018-03-23 17:14
分类:JAVA
浏览次数:155
今天我正在浏览这个网站上的一些问题,我发现一个enum被用于单例模式下的关于线程安全对这种解决方案的好处。
我用Java编程好几年了,我从来没有用过枚举。显然他们改变了很多,现在他们甚至在自己内部完全支持面向对象程序设计。
现在我天天编程用enum是为什么?

回答

当变量(特别是方法参数)只能从一组可能的值中取出一个时,应该总是使用枚举。示例应该是类型常量(协议状态:"permanent", "temp", "apprentice"),或者标志(“立即执行”,“延迟执行”)。
如果使用枚举而不是整数(或字符串代码),则会增加编译时的检查时间,避免传入无效常量的错误,并记录哪些值是合法使用的。
顺便说一句,过度使用枚举意味着你的方法做的太多了(通常最好有几个单独的方法,而不是一个需要几个标志来修改他的作用的方法),但如果你必须使用标志或类型代码,枚举是你应该用的办法。
例如下面这个例子,哪个更好?
/** 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);
再也不可能了。
上一篇如何把用逗号分隔的字符串转化到ArrayList?
从字符串中删除HTML标签下一篇
下一篇从字符串中删除HTML标签

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号