java 枚举类型
2015-06-24 13:41
393 查看
枚举的实质是什么?
枚举继承了ENUM类,枚举类型的每一个成员都以该类型的一个实例,而且默认的都是声明为public static final的 ,而且枚举里的每一个对象 就是当前枚举实例化的对象枚举里面所有的方法,里面的每个对象都可以调用
enum中的方法:
A.ordinal()用来返回枚举值在枚举类中的顺序。
B.compareTo ()比较两个枚举值的顺序,返回顺序之差。
C.values(),静态方法,返回包含一个全部枚举值的数组。
D.toString(),返回枚举常量的名称
E.valueOf(),返回指定没弄成的枚举类型的枚举常量。
先看个简单示例:
下面就是网络上的各种版本的用法了:
用法一:常量
View Code
实例
枚举继承了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 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); } }
View Code
实例
public interface DateInfo { public String getDateInfo(); } public enum Season2 implements DateInfo { SPRING("春天","春风又绿江南岸"){ @Override public String getDateInfo() { return "2-5"; } }, SUMMER("夏天","映日荷花别样红"){ @Override public String getDateInfo() { return "5-8"; } }, FALL("秋天","秋水共长天一色"){ @Override public String getDateInfo() { return "8-11"; } }, WINTER("冬天","窗寒西岭千秋雪"){ @Override public String getDateInfo() { return "11-2"; } },; private String name; private String desc; private Season2(String name,String desc){ this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } /* @Override 改为利用匿名内部类重写的方法更酷些 public String getDateInfo() { System.out.println(this.toString().equals("SPRING")); return null; } */ } Season2类继承接口DateInfo public class TestSeason { public static void main(String[] args) { // Season SPRING = Season.SPRING; // System.out.println(SPRING); // System.out.println(Season2.SPRING); for(Season2 s:Season2.values()){ // System.out.println(s); // System.out.println(s.toString().equals("SPRING")); System.out.println(s.getDateInfo()); } String str = "WINTER"; Season2 s = Season2.valueOf(Season2.class, str); System.out.println(s.getName()+" "+s.getDesc()); } } TestSeason测试类
相关文章推荐
- 我要阻止做java开发的男朋友去创业型公司工作吗?
- Eclipse SVN插件安装
- java压缩算法
- Java连接MYSQL 数据库的连接步骤
- 黑马程序员——java高新技术-jdk1.5新特性,注解,类加载器,代理
- SpringMVC过滤器:登录过滤
- Java内部类的访问调用
- Json-lib - java.util.Date 转换问题
- JAVA获取文件MD5值
- spring 拦截器 MethodInterceptor 配置 config aop
- Eclipse中关联android sdk源码
- spring 拦截器的实现
- SpringMVC拦截器(资源和权限管理)
- Java中计算时间差的方法
- JAVA多线程编程(二)——同步与通信
- springmvc中实现quartz定时任务(每分钟的第3秒执行任务调度方法)
- 【Java多线程】的学习总结
- java读取properties文件的方法实例分析
- java-mysql
- (转)Java 内存整理——堆、栈、常量池