A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞龙传神 中级黑马   /  2015-8-16 16:02  /  472 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是不是自己定义的数据类型?

4 个回复

倒序浏览
枚举是一种遍历方式,就像迭代器访问集合元素一样
Vector(向量)访问方式有两种,一种来自接口Collection的iterator()方法,还有一种在JDK1.1的时候,还没出现集合框架,那时只有Vector,访问方式只有枚举
Vector在功能上等效于ArrayList,Vector线程安全,需要判断锁;ArrayList线程不安全,不需要判断锁,所有效率较高
回复 使用道具 举报
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

Java代码  [url=][/url]

  • public enum Color {  
  •   RED, GREEN, BLANK, YELLOW  
  • }  


用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

Java代码  [url=][/url]

  • enum Signal {  
  •     GREEN, YELLOW, RED  
  • }  
  • public class TrafficLight {  
  •     Signal color = Signal.RED;  
  •     public void change() {  
  •         switch (color) {  
  •         case RED:  
  •             color = Signal.GREEN;  
  •             break;  
  •         case YELLOW:  
  •             color = Signal.RED;  
  •             break;  
  •         case GREEN:  
  •             color = Signal.YELLOW;  
  •             break;  
  •         }  
  •     }  
  • }  


用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum实例。

Java代码  [url=][/url]

  • public enum Color {  
  •     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
  •     // 成员变量  
  •     private String name;  
  •     private int index;  
  •     // 构造方法  
  •     private Color(String name, int index) {  
  •         this.name = name;  
  •         this.index = index;  
  •     }  
  •     // 普通方法  
  •     public static String getName(int index) {  
  •         for (Color c : Color.values()) {  
  •             if (c.getIndex() == index) {  
  •                 return c.name;  
  •             }  
  •         }  
  •         return null;  
  •     }  
  •     // get set 方法  
  •     public String getName() {  
  •         return name;  
  •     }  
  •     public void setName(String name) {  
  •         this.name = name;  
  •     }  
  •     public int getIndex() {  
  •         return index;  
  •     }  
  •     public void setIndex(int index) {  
  •         this.index = index;  
  •     }  
  • }  


用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。

Java代码  [url=][/url]

  • public enum Color {  
  •     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
  •     // 成员变量  
  •     private String name;  
  •     private int index;  
  •     // 构造方法  
  •     private Color(String name, int index) {  
  •         this.name = name;  
  •         this.index = index;  
  •     }  
  •     //覆盖方法  
  •     @Override  
  •     public String toString() {  
  •         return this.index+"_"+this.name;  
  •     }  
  • }  


用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

Java代码  [url=][/url]

  • public interface Behaviour {  
  •     void print();  
  •     String getInfo();  
  • }  
  • public enum Color implements Behaviour{  
  •     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
  •     // 成员变量  
  •     private String name;  
  •     private int index;  
  •     // 构造方法  
  •     private Color(String name, int index) {  
  •         this.name = name;  
  •         this.index = index;  
  •     }  
  • //接口方法  
  •     @Override  
  •     public String getInfo() {  
  •         return this.name;  
  •     }  
  •     //接口方法  
  •     @Override  
  •     public void print() {  
  •         System.out.println(this.index+":"+this.name);  
  •     }  
  • }  


用法六:使用接口组织枚举
Java代码  [url=][/url]

  • public interface Food {  
  •     enum Coffee implements Food{  
  •         BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
  •     }  
  •     enum Dessert implements Food{  
  •         FRUIT, CAKE, GELATO  
  •     }  
  • }  


用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。
EnumSet保证集合中的元素不重复;
EnumMap中的key是enum类型,而value则可以是任意类型。

回复 使用道具 举报
枚举,是用于提防软件编写时出现的低级错误;及日常编写时常量的便捷引用做的工作;
是非常方便的工具......
回复 使用道具 举报
枚举是限定有限可能值的一种手段,
使用枚举可以降低程序出错的几率,
并可以提高代码的可读性与可维护性。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马