JAVA枚举类

一、枚举的作用

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.,这样做可以保证客户代码没有办法新建一个enum的实例。 

2.。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 

3.Enum默认实现了java.lang.Comparable接口。 

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”. 

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。 

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

二、枚举的用法

用法一:常量
  在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
  Java代码
  public enum Color {
  RED, GREEN, BLANK, YELLOW
  }
  用法二:switch
  JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
  Java代码
  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代码
  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代码
  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代码
  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代码
  public interface Food {
  enum Coffee implements Food{
  BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
  }
  enum Dessert implements Food{
  FRUIT, CAKE, GELATO
  }
  }
7
  用法七:关于枚举集合的使用
  java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
时间: 2024-10-10 05:54:23

JAVA枚举类的相关文章

Java基础15:深入剖析Java枚举类

Java基础15:深入剖析Java枚举类 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示. 初探枚举类 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红.黄.绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素.此时,可将这些数据集合定义为枚举类型. 因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的

java 枚举类 enum 总结

枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型, 字符型或其它类型显然是不妥当的.为此,C语言提供了一种称为“枚举”的类型.在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变 量取值不能超过定义的范围.应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型. java中枚举类总

java 枚举类小结 Enum

好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的.进而求其次,究竟枚举类到底有何特殊之处呢? 呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点) 1 /** 2 * 测试枚举类 3 * @author Administrator 4 * @Date 2015-8-3 5

Java枚举类enum详解

枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enum.和其它普通类一样,enum同样可以有成员变量.方法.构造器,也可以实现一个或多个接口,区别是: 如果有构造器,必须用private修饰. 枚举类不能派生子类. 枚举类所有的实例必须在第一行显示定义.系统会自动给这些实例加上public static final修饰,无须程序员显示定义. 枚举类默

java枚举类Enum方法简介(valueof,value,ordinal)

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class,   它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口.   当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public   ,   static   ,   final的.注意这一点只是针对于枚举值,我们可以和在普通类里面定义   变量一样定义其它任何类型的非枚举变量

java枚举类(enum)

枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ //必须放在第一行 成员1(A,B...),成员2(A,B...),成员3(A,B....)........;//A,B可以没有 private Type A; private Type B; ...... private EnumName(Type a,Type b.......) { A=a; B=b; ..... } 关于A,B.....的

浅谈java枚举类

先来一段常用枚举类代码结构 public enum Color { //枚举对象 RED(1,"红色"),GREEN(2,"绿色"),BLUE(3,"蓝色"); //私有成员属性 private int index; private String name; //私有构造方法 private Color(int index, String name) { this.index = index; this.name = name; } //公共的g

java枚举类 (近期读书笔记整理,复习所用,存个档

某些情况下,一个类的对象是有限而固定的. 如地球上的季节,有春夏秋冬四季,即四个对象. 这种实例有限且固定的类,被称为枚举类. 早期,通过定义类的方式,直接使用简单的静态变量来表示枚举. 如public static final int Season_spring=1;      注:左边的内容改下名字和X4 但这种方式存在诸多不便和缺陷.(如类型安全和容易混淆,后来,它进化了-- 变身: java5中新增了一个关键字,enum(与class,interface的地位相同) 它是一个特殊的类,可

Java枚举类接口实战

枚举类可以实现一个或多个接口.与普通类实现接口完全一样,枚举类实现接口时,需要实现该接口所包含的方法. 如果需要每个枚举值在调用同一个方法时呈现不同的行为,则可以让每个枚举值在{...}匿名块中实现自己的业务逻辑. public interface IGradeHandler { String getGrade(String studentName); } public enum GradeHandlerEnum implements IGradeHandler { //five grade l