`

枚举的七种用法(转载)

 
阅读更多

转载地址:http://softbeta.iteye.com/blog/1185573

用法一:常量

JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

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

 

用法二:switch

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

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 实例。

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

 

用法五:实现接口

所有的枚举都继承自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 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文档。

关于枚举的实现细节和原理请参考:

参考资料:《ThinkingInJava》第四版

转载地址:http://softbeta.iteye.com/blog/1185573

分享到:
评论

相关推荐

    c#面试题 网络转载 不错 经典

    例如,上面的`enum Fruit`定义了三种水果类型,可以方便地在代码中使用这些命名的常量,而不是使用硬编码的整数值。 ```csharp enum Fruit { Apple, Pear, Orange }; ``` ### 异常处理 C#中的异常处理机制是通过...

    java编写建议(转载)

    - 例如,使用枚举类型来表示不同颜色的状态,增加代码的可读性。 **4.8 类加载机制** - 每个类都应该只被加载一次,以确保资源的有效利用。 - 理解类加载器的工作原理对于优化程序性能至关重要。 **4.9 AWT组件** ...

    【转载】javaScript常用的东东

    JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户能够与页面进行动态沟通。这篇博文整理了55个JavaScript中的常用方法,涵盖了数组操作、对象处理、字符串处理、函数...

    游戏编程指南.doc

    - **枚举(Enums)**:枚举是一种定义命名常量的方式,提高代码可读性。 后续章节可能涵盖更高级的主题,如内存管理、对象导向编程、图形渲染、网络通信、游戏循环和事件处理、物理模拟、音效和资源管理等。 总的...

    游戏编程指南

    - **枚举(Enumerations)**:枚举提供了一种创建命名常量的机制,有助于提高代码的可读性和维护性,例如定义游戏状态(PLAYING, PAUSED, EXITING)。 随着这些基础知识的掌握,读者将能够构建游戏的基本框架,如...

    java编程思想习题及答案

    8. **枚举与注解**:了解枚举类型和注解的使用,它们在代码规范、元数据标注等方面发挥着重要作用。 9. **泛型**:理解泛型的概念,知道如何使用泛型类、接口和方法,以增强代码的类型安全性和重用性。 10. **设计...

    GridView使用技巧一

    结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...

    devcon参考文档

    在"转载]自动安装驱动程序_雪天使_新浪博客.pdf"这篇文章中,作者详细讲解了如何使用devcon自动化驱动程序的安装过程。这涉及到创建批处理文件,结合devcon的命令参数,例如`devcon install`,来指定驱动程序INF文件...

    C#写的读取注册表跟系统自带一样

    在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序时非常常见。本项目"读取注册表跟系统自带一样"显然是一个使用C#编写的程序,其目标是模仿并可能增强Windows操作系统内置的注册表编辑...

    GridView使用技巧二

    结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关 联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type ... 捕获释放 event.srcElement.setCapture();...event.srcElement.releaseCapture();... 根据鼠标获得元素: document....

    制作第一个页面 欢迎您进入.Net启动运行

    结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...

Global site tag (gtag.js) - Google Analytics