Java中枚举的相关知识

Posted 周青灯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中枚举的相关知识相关的知识,希望对你有一定的参考价值。

1、枚举概述

(1)从Java SE 5.0开始,Java程序设计语言引入了一种新的类型——枚举(Enum);

(2)枚举是指由一组固定的常量组成的类型。使用关键字enum定义;

(3)定义枚举语法格式如下:

                [访问修饰符] enum enumName

                        enumContantName[,enumContantName2...[;]]

                        //[field,method]

                

需要注意的是:

        1)enum是关键字;

        2)enumContantName[,enumContantName2...[;]]表示枚举常量列表,枚举常量之间以逗号隔开;

        3)//[field,method]表示其他的成员,包括构造方法,置于枚举常量的后面;

        4)在枚举中,如果除了定义枚举常量,还定义了其他成员,则枚举常量列表必须以分号(;)结尾;

(4)枚举其实就是一种类型,是java.lang.Enum类的子类,继承了Enum类的许多有用的方法。

 2、使用枚举类的作用及好处

(1)在Java中,通常使用枚举表示一组个数有限的值,用于实现对输入的值进行约束检查;

(2)在程序中使用枚举的好处总结如下:

        1)枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值。

        2)枚举更易于编程时输入,使用枚举赋值,只需要输入枚举名,然后输入一个点(.),就能将所有的值显示出来。

        3)枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便。

实现枚举的的代码如下:

//创建枚举类
public enum Gender 
	男,女
//创建学生类
public class Student 
	
	public Gender gender;//定义性别属性

//创建测试类 
public class Test 
	public static void main(String[] args) 
		Student student = new Student();
		//Student类中gender的数据类型是枚举类型Gender,你传递String类型会报错
		student.gender = Gender.男;
		
	

java知识点拾遗:)

枚举:http://blog.csdn.net/qq_27093465/article/details/52180865

用法一:常量

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

Java代码 
  1. public enum Color {  
  2.   RED, GREEN, BLANK, YELLOW  
  3. }  

 

用法二: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实例序列的最后添加一个分号。而且 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. }  

 

 

用法四:覆盖枚举的方法

下面给出一个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. }  

 

用法五:实现接口

所有的枚举都继承自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. }  

 

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

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

 

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

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

参考资料:《ThinkingInJava》第四版

http://softbeta.iteye.com/blog/1185573

 

以上是关于Java中枚举的相关知识的主要内容,如果未能解决你的问题,请参考以下文章

Java开发知识之Java的枚举

我奶奶都能懂java枚举类型

我奶奶都能懂java枚举类型

java知识点拾遗:)

Servlet的相关知识点

经验分享新手学Java编程语言怎么入门?