标签:
枚举的实质是什么?
枚举继承了ENUM类,枚举类型的每一个成员都以该类型的一个实例,而且默认的都是声明为public static final的 ,而且枚举里的每一个对象 就是当前枚举实例化的对象枚举里面所有的方法,里面的每个对象都可以调用
enum中的方法:
A.ordinal()用来返回枚举值在枚举类中的顺序。
B.compareTo ()比较两个枚举值的顺序,返回顺序之差。
C.values(),静态方法,返回包含一个全部枚举值的数组。
D.toString(),返回枚举常量的名称
E.valueOf(),返回指定没弄成的枚举类型的枚举常量。
先看个简单示例:
enum FruitEnum { APPLE(1), ORANGE(2); // 调用构造函数来构造枚举项 private int value = 0; private FruitEnum(int value) { // 必须是private的,否则编译错误 this.value = value; } public static FruitEnum valueOf(int value) { // 手写的从int到enum的转换函数 switch (value) { case 1: return APPLE; case 2: return ORANGE; default: return null; } } public int value() { return this.value; } } public static void main(String[] args) { System.out.println(FruitEnum.APPLE.value()); // 1 System.out.println(FruitEnum.ORANGE.value()); // 2 System.out.println(FruitEnum.valueOf(1)); // FruitEnum.APPLE System.out.println(FruitEnum.valueOf(2)); // FruitEnum.ORANGE }
下面就是网络上的各种版本的用法了:
用法一:常量
public enum Color { RED, GREEN, BLANK, YELLOW }
用法二: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 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; } }
用法四:覆盖枚举的方法
public class Test { 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 static void main(String[] args) { System.out.println(Color.RED.toString()); } }
用法五:实现接口
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); } }
标签:
原文地址:http://www.cnblogs.com/yujian-bcq/p/4597497.html