java枚举类型学习
2016-03-30 18:04
267 查看
用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。
Update:
枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString()或者name()打印的string。
枚举的数据都是一个实例对象,比如 enum Test{A}中A就是一个对象,A的toString和name()的结果是“A”。而如果一个字符串为"A",可以转为对应的枚举实例:Test.valueOf("A")
View Code
通过相应的enum实例,我们可以调用其上的方法。这通常也成为表驱动的代码(table-driven code),请注意它与前面提到的命令模式的相似之处。
在面向对象的程序设计中,不同的行为与不同的类关联。而通过常量相关的方法,每个enum实例可以具备自己独特的行为,这似乎说明每个enum实例就是一个特殊的类。我们并不能真的将enum实例当做一个类来使用。
与使用匿名内部类相比较,定义常量相关方法的语法更高效和简洁,下面是一个有趣的洗车的例子:
Update:
枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString()或者name()打印的string。
枚举的数据都是一个实例对象,比如 enum Test{A}中A就是一个对象,A的toString和name()的结果是“A”。而如果一个字符串为"A",可以转为对应的枚举实例:Test.valueOf("A")
1.简单创建
枚举就是一个固定的集合,内容是声明的类。package com.test.java.tenum; import java.text.DateFormat; import java.util.Date; /** * Created by Administrator on 2016/3/31. */ public enum ConstantspecificMethod { DATE_TIME{ String getInfo(){ return DateFormat.getDateInstance().format(new Date()); } }, CLASSPATH{ String getInfo(){ return System.getenv("CLASSPATH"); } }, VERSION{ String getInfo(){ return System.getProperty("java.version"); } }; abstract String getInfo(); public static void main(String[] args) { for (ConstantspecificMethod csm : values()) { System.out.println(csm.getInfo()); } } }
View Code
通过相应的enum实例,我们可以调用其上的方法。这通常也成为表驱动的代码(table-driven code),请注意它与前面提到的命令模式的相似之处。
在面向对象的程序设计中,不同的行为与不同的类关联。而通过常量相关的方法,每个enum实例可以具备自己独特的行为,这似乎说明每个enum实例就是一个特殊的类。我们并不能真的将enum实例当做一个类来使用。
与使用匿名内部类相比较,定义常量相关方法的语法更高效和简洁,下面是一个有趣的洗车的例子:
相关文章推荐