您的位置:首页 > 编程语言 > Java开发

java 枚举常见用法

2015-07-17 08:38 621 查看
用法一:常量

public enum MyColor{Red,Black,Blue}

public enum Color {

  RED, GREEN, BLANK, YELLOW

}

 enum为枚举类的关键字,使用方法与静态常量类似:MyColor m = MyColor.Black;

用法二:switch

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;

  }

 }

}

public enum MyColor{Red,Black,Blue}

 public static void main(String[] args){

  MyColor m = MyColor.Black;

  switch(m){

  case Red:

   System.out.println("MyColor is Red");

   break;

  case Black:

   System.out.println("MyColor is Black");

   break;

  default:

   System.out.println("MyColor is Blue");

   break;

  }

  System.out.println(m);

 }

注:switch语句支持byte,short,int,char,枚举类型。

用法三:向枚举中添加新方法

    自定义方法,必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

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()方法覆盖的例子。

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;

 }



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 不支持多继承,所以枚举对象不能再继承其他类。

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);

 }

}

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);

 }

}

 

用法六:使用接口组织枚举

public interface Food {

 enum Coffee implements Food{

  BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO

 }

 enum Dessert implements Food{

  FRUIT, CAKE, GELATO

 }

}

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则可以是任意类型。关于这个两个集合的使用参考JDK文档。

 


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java enum