Java中的枚举值
在C++时期就有了枚举值这个类型,它是1种有序键值对的集合,使用枚举类型可以在语义化和结构化之间达成1种平衡。如果我们的代码中到处都是需要文档才能看懂的数字或字符(串)定义的话,那将是1种非常痛苦的事情。老陈最近在学习Java,在对项目重构的时候,就需要枚举类型来优化代码结构,给力的是,Java和.NET等语言(环境)1样都提供了对枚举类型的直接支持!但是,我却遇到了1个比较苦恼的问题…… 在C++/C#/Java中,我们要定义1个简单的枚举值,格式以下: 1 // C++ C#
和C++的语法基本1致8 } Java
看上去跟C#没区分8 } 而当我需要给每一个枚举值成员绑定1个特定常量的时候,Java就显得很不给力了,而且差异非常大。 绑定常量的C++/C#枚举值定义以下: C++3 {
4 Red = 1,128); line-height:1.5!important">5 Green = 2,128); line-height:1.5!important">6 Blue = 3 7 }; C#7 }
绑定常量的Java枚举值定义以下: 1 2 看起来繁琐很多了哦,好不给力啊! 3 public 4 {
5 Red(1),Green(2),Blue(3); 6 7 private int _value; 8 9 private Colors(int value) 10 { 11 _value = value; 12 } 13 14 int value() 15 { 16 return _value; 17 } 18 } 看到这里,.NET猴子们是否是显现出某种狞笑和各种鄙视的眼眸? 相信您可能已体会到,Java枚举类型的成员要绑定常量的话,其语法非常繁琐,上述举例的代码还是非常简单的实现,而且从语法上讲,也有很变态的地方。 但是,我们看待问题不能只看1面,我们应当斟酌斟酌,Java这么弄肯定是由它的缘由的。最少,以下的代码在C++/C#中要实现起来就不是那末容易了。 老陈曰:江山如此多娇,Java独领风骚! 5 Red(1,"红色"),Green(2,"绿色"),Blue(3,"蓝色");
8 private String _name; 9 10 int value,String name) 11 { 12 _value = value; 13 _name = name; 14 } 15 16 17 { 18 19 } 20 21 public String getName() 22 { 23 return _name; 24 } 25 }
看到这里,Java猴子们笑而不语!.NET猴子各种羡慕妒忌恨! 各种编程语言本质上都是人类的某种工具而已,Java如此做法其实也在1定的程度上优化了编码体验,不是么?只不过,我倒是希望各种语言能够相互学习,不要总是引发各种阵营的猴子相互打架,打架能解决问题么?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |