黑马程序员技术交流社区

标题: 枚举和静态常量的却别 [打印本页]

作者: 381946250    时间: 2013-5-30 18:06
标题: 枚举和静态常量的却别
本帖最后由 381946250 于 2013-6-1 09:35 编辑


public enum Color {
         RED,GREEN,BLUE;
         private Color(){}
}

public class Demo(){
      Color c = Color.RED;
}
这里就强行规定Color的值类型必须是Color这个枚举类里面定义的属性之一。

那么用静态常量属性也可以搞定
public  class Color(){
     private static final String COLOR_RED="red";
}
public class Demo(){
    String color = Color.COLOR_RED;
}

就代码上面看,两者的区别在于用枚举的话把所有类型单独封装成了一个类(COLOR)
而用静态常量属性的看,他并没有把类型封装成一个类,他只是把要返回的具体数值封装到了一个静态常量类里面。
但这两者都可以达到对赋值的范围控制。
所以我想请教的就是除了上面的代码形式不一样外,他们到底还有什么区别,他们的优劣势在什么地方。
作者: 李润根    时间: 2013-5-30 21:13
一句话讲解,这就是“面向对象”设计
作者: Changer_s    时间: 2013-5-30 21:27
李润根 发表于 2013-5-30 21:13
一句话讲解,这就是“面向对象”设计

牛逼!!!高手
作者: Changer_s    时间: 2013-5-30 21:35

搜索结果如下:
枚举与静态常量比较

静态常量是枚举模式的应用
它有很多缺点:类型不安全(静态常量可以随意增加使用或操作),无命名空间,脆弱(某常量值改变后客户端如果不编译仍能使用,但表现却是未定义的),静态常量打印值为数字,也不具提示性等等





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2