java基础篇---枚举详解

在JDK1.5之前,JAVA可以有两种方式定义新类型:类和接口,对于大部分面向对象编程,有这两种似乎就足够了,但是在一些特殊情况就不合 适。例如:想要定义一个Color类,它只能有Red,Green,Blue三种,其他值则是错误,在JDK1.5之后便引入枚举类型。

枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。

public enum Color{
    RED,GREEN,BLUE ;    // 定义三个枚举的类型
};

枚举中有三个取值,以后再取的时候,只能从这三个内容取

public class GetEnumContent{
    public static void main(String args[]){
        Color c = Color.BLUE ;        // 取出蓝色
        System.out.println(c) ;
    }
};

可以直接使用在Switch语句上

public class SwitchPrintEnum{
  public static void main(String args[]){
    for(Color c:Color.values()){	// 输出枚举中的全部内容
      print(c) ;
    }
  }
  public static void print(Color color){
    switch(color){
      case RED:{
        System.out.println("红颜色") ;
        break ;
      }
      case GREEN:{
        System.out.println("绿颜色") ;
        break ;
      }
      case BLUE:{
        System.out.println("蓝颜色") ;
        break ;
      }
      default:{
        System.out.println("未知颜色") ;
        break ;
      }
    }
  }
};

使用enum关键字可以定义一个枚举,也可以定义一个Eunm类

枚举类的操作方法:

技术分享

在枚举已经实现Comparable接口,所以在枚举中的内容可以排序。

案列一

import java.util.Iterator;
import java.util.Set ;
import java.util.TreeSet ;
enum Color{
  RED,GREEN,BLUE ;
}
public class ComparableEnum{
  public static void main(String args[]){
    Set<Color> t = new TreeSet<Color>() ;	// 设置类型
    t.add(Color.GREEN) ;	// 加入绿色
    t.add(Color.RED) ;		// 加入红色
    t.add(Color.BLUE) ;		// 加入蓝色
    Iterator<Color> iter = t.iterator() ;
    while(iter.hasNext()){
      System.out.print(iter.next() + "、") ;
    }
  }
};

案列二

使用EnumMap

import java.util.EnumMap ;
import java.util.Map ;
enum Color{
  RED , GREEN , BLUE ;
}
public class EnumMapDemo{
  public static void main(String args[]){
    Map<Color,String> desc = null ;		// 定义Map对象,同时指定类型
    desc = new EnumMap<Color,String>(Color.class) ;	// 实例化EnumMap对象
    desc.put(Color.RED,"红色") ;
    desc.put(Color.GREEN,"绿色") ;
    desc.put(Color.BLUE,"蓝色") ;
    System.out.println("====== 输出全部的内容 ======") ;
    for(Color c:Color.values()){
      System.out.println(c.name() + " --> " + desc.get(c)) ;
    }
    System.out.println("====== 输出全部的键值 ======") ;
    for(Color c:desc.keySet()){
      System.out.print(c.name() + "、") ;
    }
    System.out.println() ;
    System.out.println("====== 输出全部的内容 ======") ;
    for(String s:desc.values()){
      System.out.print(s + "、") ;
    }
  }
};

案列三

使用 EnumSet

import java.util.EnumSet ;
enum Color{
  RED , GREEN , BLUE ;
}
public class EnumSetDemo{
  public static void main(String args[]){
    EnumSet<Color> esOld = null ;			// 声明一个EnumSet对象
    EnumSet<Color> esNew = null ;
    System.out.println("======== EnumSet.copyOf(Color.class) =====") ;
    esOld = EnumSet.noneOf(Color.class) ;	// 将枚举的全部类型设置到EnumSet对象之中
    esOld.add(Color.RED) ;	// 增加内容
    esOld.add(Color.GREEN) ;	// 增加内容
    esNew = EnumSet.copyOf(esOld) ;	// 从已有的集合拷贝过来
    print(esNew) ;
  }
  public static void print(EnumSet<Color> temp){	// 专门的输出操作
    for(Color c:temp){		//  循环输出EnumSet中的内容
      System.out.print(c + "、") ;
    }
    System.out.println() ;
  }
};

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。