黑马程序员技术交流社区

标题: 关于enum问题 [打印本页]

作者: 浪无痕-陈文坤    时间: 2013-8-4 11:21
标题: 关于enum问题
本帖最后由 杨兴庭 于 2013-8-4 20:09 编辑

enum类型存在有什么意义,它体现了什么思想?
作者: 吴光新    时间: 2013-8-4 12:30
enum的存在,意义在于限制了元素的取值,大大的提高了统一性
作者: 手心里的温柔    时间: 2013-8-4 12:39
Enum一般用来表示一组相同类型的常量。如日期、颜色等。
对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”==”来替换equals。是一种好的习惯。
JDK1.5之前没有Enum这个类型,那时候 一般用接口常量来替代。有了JavaEnum之后,可以更贴近的表示这种常量。


希望能帮到你
作者: 米中之玉    时间: 2013-8-4 13:29
我们知道,类都是创建对象用的。而根据类所对应的功能不同,
类所能实例化的对象数量也有要求:
1、有的类可以随意创建对象,比如学生;
2、有的类只能创建一个对象;
3、有的类只能创建有限个对象。比如一周只有七天,所以只能有7个对象。

那么对应的
1、只要有共有的构造函数就行,也就是普通类。
2、将所有构造函数私有化,向外提供能够返回该类类型的公共方法,我们称之为“单例”。
3、既然对象不是无限个,那么构造函数就必须私有;但对象又多于一个,则必须在内部实现定义对象。
而且该类都有自己独特的特点,为了与其他类加以区分,就将给种类型命名为 enum。


我是这么理解的,希望有帮助。

类与对应对象的多少.jpg (39.04 KB, 下载次数: 17)

类与对应对象的多少.jpg

作者: wang100753    时间: 2013-8-4 13:43
enum的简单应用,以下简洁的代码已经包括enum所提供的绝大部分功能
  1. import java.util.EnumMap;  
  2. import java.util.EnumSet;  
  3. public class EnumTest {  
  4.     // 定义一个enum枚举类型,包括两个实例ON,OFF   
  5.     public enum State {  
  6.         ON, OFF  
  7.     };  
  8.     // 测试函数   
  9.     public static void main(String[] args) {  
  10.         // 直接变量enum   
  11.         for (State s : State.values())  
  12.             System.out.println(s.name());  
  13.         // switch与enum的结合使用   
  14.         State switchState = State.OFF;  
  15.         switch (switchState) {  
  16.         case OFF:  
  17.             System.out.println("OFF");  
  18.             break;  
  19.         case ON:  
  20.             System.out.println("ON");  
  21.             break;  
  22.         // EnumSet的使用   
  23.         EnumSet<State> stateSet = EnumSet.allOf(State.class);  
  24.         for (State s : stateSet) {  
  25.            System.out.println(s);  
  26.         }  
  27.         // EnumMap的使用   
  28.         EnumMap<State,String> stateMap = new EnumMap<State,String>(State.class);  
  29.         stateMap.put(State.ON, "is On");  
  30.         stateMap.put(State.OFF, "is off");  
  31.         for (State s : State.values()) {  
  32.             System.out.println(s.name() + ":" + stateMap.get(s));  
  33.         }  
  34.     }  
  35. }
复制代码

作者: 浪无痕-陈文坤    时间: 2013-8-4 18:28
Jiewin 发表于 2013-8-4 12:30
enum的存在,意义在于限制了元素的取值,大大的提高了统一性

谢谢!!!
作者: 浪无痕-陈文坤    时间: 2013-8-4 18:28
手心里的温柔 发表于 2013-8-4 12:39
Enum一般用来表示一组相同类型的常量。如日期、颜色等。
对这些属性用常量的好处是显而易见的,不仅可以保 ...

谢谢!!!
作者: 浪无痕-陈文坤    时间: 2013-8-4 18:29
米中之玉 发表于 2013-8-4 13:29
我们知道,类都是创建对象用的。而根据类所对应的功能不同,
类所能实例化的对象数量也有要求:
1、有的类可 ...

谢谢!顶顶!
作者: 浪无痕-陈文坤    时间: 2013-8-4 18:52
wang100753 发表于 2013-8-4 13:43
enum的简单应用,以下简洁的代码已经包括enum所提供的绝大部分功能

谢谢!!!




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