Java常用枚举的用法

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

Java代码

  1. public enum Color {

  2. RED, GREEN, BLANK, YELLOW

  3. }

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

用法二:switch


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

Java代码

  1. enum Signal {

  2. GREEN, YELLOW, RED

  3. }

  4. public class TrafficLight {

  5. Signal color = Signal.RED;

  6. public void change() {

  7. switch (color) {

  8. case RED:

  9. color = Signal.GREEN;

  10. break;

  11. case YELLOW:

  12. color = Signal.RED;

  13. break;

  14. case GREEN:

  15. color = Signal.YELLOW;

  16. break;

  17. }

  18. }

  19. }

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

Java代码

  1. public enum Color {

  2. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);

  3. // 成员变量

  4. private String name;

  5. private int index;

  6. // 构造方法

  7. private Color(String name, int index) {

  8. this.name = name;

  9. this.index = index;

  10. }

  11. // 普通方法

  12. public static String getName(int index) {

  13. for (Color c : Color.values()) {

  14. if (c.getIndex() == index) {

  15. return c.name;

  16. }

  17. }

  18. return null;

  19. }

  20. // get set 方法

  21. public String getName() {

  22. return name;

  23. }

  24. public void setName(String name) {

  25. this.name = name;

  26. }

  27. public int getIndex() {

  28. return index;

  29. }

  30. public void setIndex(int index) {

  31. this.index = index;

  32. }

  33. }

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

Java代码

  1. public enum Color {

  2. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);

  3. // 成员变量

  4. private String name;

  5. private int index;

  6. // 构造方法

  7. private Color(String name, int index) {

  8. this.name = name;

  9. this.index = index;

  10. }

  11. //覆盖方法

  12. @Override

  13. public String toString() {

  14. return this.index+"_"+this.name;

  15. }

  16. }

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

Java代码

  1. public interface Behaviour {

  2. void print();

  3. String getInfo();

  4. }

  5. public enum Color implements Behaviour{

  6. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);

  7. // 成员变量

  8. private String name;

  9. private int index;

  10. // 构造方法

  11. private Color(String name, int index) {

  12. this.name = name;

  13. this.index = index;

  14. }

  15. //接口方法

  16. @Override

  17. public String getInfo() {

  18. return this.name;

  19. }

  20. //接口方法

  21. @Override

  22. public void print() {

  23. System.out.println(this.index+":"+this.name);

  24. }

  25. }

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

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

Java代码

  1. public interface Food {

  2. enum Coffee implements Food{

  3. BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO

  4. }

  5. enum Dessert implements Food{

  6. FRUIT, CAKE, GELATO

  7. }

  8. }

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》第四版

时间: 2024-10-05 22:35:49

Java常用枚举的用法的相关文章

JAVA常用集合框架用法详解基础篇一之Colletion接口

首先,在学习集合之前我们能够使用的可以存储多个元素的容器就是数组. 下面举几个例子主要是引出集合类的: 1.8,4,5,6,7,55,7,8  像这样的类型相同的可以使用数组来存储,本例可以用int[] arr来存储. 2."zhnagsan",true,68 像这样的可以使用StringBuilder或者StringBuffer来存储,但最终需要使用.toString()的方法转换成字符串才可以使用.即 变为:"zhnagsantrue68". 3."李

Java enum(枚举)的用法详解(转)

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. enum Signal { GREEN, YELLOW, RED } pu

Java enum枚举的用法

一. 出现背景: 在JDK1.5之前,我们定义常量是这样的:public static final String RED = "RED"; 在JDK1.5中加入了枚举类型,我们可以把相关的常量分组到一个枚举类中: public enum Color { RED, GREEN, BLUE; } 使用的时候可以这样:Color c = Color.RED 二. 枚举特点: 1. 枚举enum是一个特殊的Java类,它继承自java.lang.Enum,继承了很多Enum的方法.但枚举类是一

Java map 详解 - 用法、遍历、排序、常用API等

尊重原创:http://www.cnblogs.com/lzq198754/p/5780165.html 概要: java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map. Map 提供了一个更通用的元素存储方法.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. 本文主要介绍java map的初始化.用法.map的四种常用的遍历方式.map的排序以及常用api. | |目录 1Map用法 ·类

java枚举的用法

java枚举的用法 1. 枚举类型的使用 package com.longfor.devops.eagleeye.client.dto; import lombok.Data; /** * @author liuyang */ @Data public class AppStatusDTO { /** * app的ID */ private String appInstanceId; /** * app的状态 */ private Status status; /** * 状态的内容 */ pr

Java常用英语汇总(面试必备)

Java常用英语汇总(面试必备) abstract (关键字)             抽象 ['.bstr.kt] access                            vt.访问,存取 ['.kses]‘(n.入口,使用权) algorithm                     n.算法 ['.lg.riem] annotation                     [java]代码注释 [.n.u'tei..n] anonymous                

java常用英语单词

abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.riem] annotation [java]代码注释 [.n.u'tei..n] anonymous adj.匿名的[.'n.nim.s]' (反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用 [.'plai] application n. 应 用 ,

Java核心 --- 枚举

Java核心 --- 枚举 枚举把显示的变量与逻辑的数字绑定在一起在编译的时候,就会发现数据不合法也起到了使程序更加易读,规范代码的作用 一.用普通类的方式实现枚举 新建一个终态类Season,把构造方法设为私有,因为枚举值不能随意增加因为不能new出这个类的对象,所以需要定义成员变量,把new写在类的内部这样,就可以在类的外部通过访问类的静态成员变量的方式访问到枚举值通过这样的方式,只能在类的外部使用在枚举类的内部定义的枚举值 类Season里面是可以有方法的,我们设置地球又公转了四分之一方法

Java基础 —— Java常用类

Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@"+哈希码(一般用于覆盖). equals()方法:返回"=="操作的布尔值(一般用于覆盖). finalize()方法:用于对象的销毁(不受人为控制,由JVM调用,遵从垃圾回收机制). clone()方法:用于对象之间的拷贝(深拷贝). getClass()方法:返回对象的字节码文件对