枚举类型究竟是什么呢,有什么作用?

解决方案 »

  1.   

    举个常用的例子,你要表示星期1-7,你可以用int1-7,但是当你把它作为参数的时候,有时后你就给考虑传入0,8的情况.而且用数字表示还需要相应的注释和文档.
    这个时候你定义个一个枚举,名字就叫字面就叫Monday , Tuesday ,....就行,直观,并且值可控.
      

  2.   

    整形枚举
    enum LevelsType{
       LEVEL1 = 1,
       LEVEL2 = 2,
       LEVEL3 = 3,
       LEVEL4 = 4
    };
    字符型枚举
    public enum CarEnum {    BMW("BMW"), TOYOTA("TOYOTA"), FIAT("FIAT");
        private String CarType;    private CarEnum(String CarType) {
       this.CarType = CarType;
        }     public String getCarType() {
       return CarType;
        }
    }
    枚举测试:public class EnumTest {
    static CarEnum mycar;
        public static void main(String args[])
        {
            System.out.println(mycar.BMW.getCarType());
        }
    }LZ跑跑这个程序,应该就有对EMUN的一点感觉了
      

  3.   

    其实枚举不是java的首创,好像在JDK1.5版本之前就没有引入这个概念。
    其实我个人觉得枚举用处不大,用其他方法一样可以实现。
    常量接口中的常量同样可以起到作用。
      

  4.   

    Java5 以后的新特性。其功能类似于
    public static final int ONE = 1; 
    个人认为纯属鸡肋,有没有都一样。
    反正我从来不用,能看懂别人写的枚举代码就行了。
      

  5.   

    赞同,觉得和public static final ~ 差不多。
    从来不用泛型。2楼的例子也编译不通过。
      

  6.   

    yes,现实项目中用静态常量的更普遍。
      

  7.   

     规则与意义l  枚举类型使代码更具可读性,理解清晰,易于维护。在Visual Stuido 2008等编译工具中,良好的智能感知为我们进行程序设计提供了更方便的代码机制。同时,如果枚举符号和对应的整数值发生变化,只需修改枚举定义即可,而不必在漫长的代码中进行修改。l  枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。例如:public static void Main(){    LogLevel log = LogLevel.Information;    GetCurrentLog(log);}private static void GetCurrentLog(LogLevel level){    Console.WriteLine(level.ToString());}试图为GetCurrentLog方法传递整数或者其他类型参数将导致编译错误,枚举类型保证了类型的安全性。l  枚举类型的默认值为0,因此,通常给枚举成员包含0值是有意义的,以避免0值游离于预定义集合,导致枚举变量保持非预定义值是没有意义的。另外,位枚举中与0值成员进行“位与”运算将永远返回false,因此不能将0值枚举成员作为“位与”运算的测试标志。l  枚举的声明类型,必须是基于编译器的基元类型,而不能是对应的FCL类型,否则将导致编译错误。
      

  8.   

    这是从别处转来的  
    原文地址:
    http://book.csdn.net/bookfiles/684/10068421452.shtml 题目叫做 简易不简单。感觉这个题目真的很符合 枚举类型。
      

  9.   

    不管在 JDK 5 中,还是 JDK 5 之前采用面向对象的方式都可以实现类型安全枚举类型。枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制。把一些运行期的参数检查放到了编译期,做到这点是一个很大的进步。
      

  10.   

    java是因为被诟病没有枚举,在jdk1.5后加上java.lang.Enum。使用时用关键字enum来代表,枚举中也可以定义方法和属性,但是构造方法一定是私有的
    相比其他语言确实是鸡肋。
      

  11.   

    同样的疑问。
    public static final Color color1 = new Color(255,255,0); 
    public static final Color color2 = new Color(255,0,0); 
    不也做到了限定参数个数,限制调用,编译期即决定了参数类型实例了么?
      

  12.   


    对,这种写法是 enum 被编译后的方式,也是 JDK 5 之前实现枚举类的方法!enum 类被编译之后,产生的字节码也是类似于这些代码产生的字节码,也就是说 JDK 5 中的 enum 只是在语法层次上写法,底层机制没有任何改变,或者说 JDK 5 中的 enum 只是一个糖衣而已。
      

  13.   

    我觉得楼上引用别人帖子的那位兄弟写的很清楚了  可以保证安全性  虽然你可以用静态常量定义来替代枚举  但是当枚举作为参数时更安全  比如一个表示星期一到星期天的枚举是一个方法的参数  这时候如果你给这个方法传个参数9来调用就会报错  但是如果这个方法的参数是int  你只要传的是整形都不会报错    而且  在在定义一些值的时候你难道不觉得省力了许多吗?  如果要你定义100个常量的时候你就知道枚举的好了  包糖衣还是很有用的!