以前没有用过c++,对enum类型不熟悉,请问大家,enum这个类型是主要用来做什么,什么时候用?java里现在用什么来替代enum?

解决方案 »

  1.   

    enum就像一个字典,常用来定义一些常量
    好处就是节约内存
      

  2.   

    千里之行,始于“结贴”  hehe 
      

  3.   

    方便列举,列举不用改变内容的,除了int外这个也可以用于switch
      

  4.   

    能举个使用enum的例子吗?比如怎么调用它里面的常量?
      

  5.   


    class Time {    private Season season = Season.Spring;    public Season getSeason() {
            return season;
        }    public static void main(String[] args) {
            Time t = new Time();
            System.out.println(t.getSeason());
        }
    }enum Season {    Spring, Summer, Autumn, Winter
    }
      

  6.   

    enum有个好处就是可以用switch,这个特点是用enum的一大原因。
      

  7.   

    看到一篇文章,作者介绍不建议在java里使用enum,他认为可以用类来代替enum.这是enum:public enum SexEnum {
        male(1),female(0);
        
        private final int value;
        
        private SexEnum(int value){
            this.value = value;
        }
        
        public int getValue(){
            return this.value;
        }
    }public class TestSexEnum {
        /*
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(SexEnum.male.getValue());
            for (SexEnum item:SexEnum.values()){
                System.out.println(item.toString()+item.getValue());
            }    }}
    这是class:与类相同,不同的地方就是写法不一样(enum比较简单,但是写法比较陌生)
    同样可以添加方法,属性
    enum不能继承类(包括继承enum),只能实现接口,类无此限制(除非用final来限制)。在这个方面,enum更像interface
    enum只支持public和[default] 访问修饰,class支持比较丰富
    可以与下面的类比较一下,定义比较相似
    Public class Sex{
        Public static final Sex male = new Sex(1);
        Public static final Sex female = new Sex(0);    Private Sex(int value){
            This.value = value;
    }Public int getValue(){
        Return this.value;
    }
    }=调用比较相似
    SexEnum.male.getValue()
    Sex.male.getValue()总结:其实完全能够用class替代enum,个人认为enum是早期面向过程中,简单数值枚举集合的一种表示,在java中对enum进行了扩展,让它只具有类的部分能力,导致结构不清晰,在java中进入enum有画蛇添足的感觉.更为重要的是,我们在进行设计的时候引入enum非常容易偏离OO思想,进入以数据或者过程为中心的路子  大家认为现在java里还有用enum的必要没有?
      

  8.   

    Effective java中倒是比较推崇enum
    比如类型安全,使用方便等优点.
    感觉enum没有必要有那么多特性吧.
    再说enum编译之后就是个普通的类,如果要使用class来实现,自己写也可以,就是麻烦点.
      

  9.   

    JAVA的ENUM没什么用
    设计的非常非常的诡异
    其实他的ENUM就是一个类,一个静态类而已
    老实说。。JAVA的ENUM非常的难用,和C相比,这东西基本没什么大的用处还是用老办法,直接定义FINAL STATIC变量的办法来声明枚举吧,方便实用
      

  10.   

    也没办法,这样可以不用修改jvm.只对编译器特殊处理一下就可以了.
    比直接使用final static的好处就是有类型检查
      

  11.   

    ENUM的语法太
    我一般用的时候也只是和常量一样,只声明枚举名,他的赋值语法。。好怪异。。
    一般在用到需要赋值的枚举时,都是做一个单独的类,里面放常量简单。易懂。
      

  12.   

    java中一切都是对象,enum也就是个特殊的类而已,只不过这个类把实例的样子限定死了。从而,方便,安全。其实像构造函数,成员函数,成员变量什么的,enum也都是有的。
    很好理解^_^试着用几下就知道。
      

  13.   


      感觉还是java里直接用静态常量来代替enum比较好。