码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA笔记:枚举

时间:2015-01-20 09:05:49      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

枚举类型简介

枚举规定好了指定的取值范围,所有的内容只能从指定的范围中取得,此时,一个类只能产生固定的几个对象。
class Color{
	public static final Color RED = new Color("红色") ;	// 定义第一个对象
	public static final Color GREEN = new Color("绿色") ;	// 定义第一个对象
	public static final Color BLUE = new Color("蓝色") ;	// 定义第一个对象
	private String name ;
	private Color(String name){
		this.name = name ;
	}
	public void setName(String name){
		this.name = name ;
	}
	public String getName(){
		return this.name ;
	}
	public static Color getInstance(int i){
		switch(i){
			case 1:{
				return RED ;
			}
			case 2:{
				return GREEN ;
			}
			case 3:{
				return BLUE ;
			}default:{
				return null ;
			}
		}

	}
};
public class ColorDemo01{
	public static void main(String args[]){
		Color c1 = Color.RED ;	// 取得红色
		System.out.println(c1.getName()) ;	// 输出名字
		Color c2 = Color.getInstance(3) ;	// 根据编号取得名字
		System.out.println(c2.getName()) ;
	}
};


枚举类:Enum

定义一个枚举类型:enum
用enum可以直接定义枚举类型。
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其实继承的是java.lang.Enum类。

实例:
enum Color{
	RED,GREEN,BLUE ;
	private String name ;			// 定义name属性
	public void setName(String name){
		switch(this){	// 判断操作的是那个枚举对象
			case RED:{
				if("红色".equals(name)){
					this.name = name ;	// 允许设置名字
				}else{
					System.out.println("设置内容错误。") ;
				}
				break ;
			}
			case GREEN:{
				if("绿色".equals(name)){
					this.name = name ;	// 允许设置名字
				}else{
					System.out.println("设置内容错误。") ;
				}
				break ;
			}
			case BLUE:{
				if("蓝色".equals(name)){
					this.name = name ;	// 允许设置名字
				}else{
					System.out.println("设置内容错误。") ;
				}
				break ;
			}
		}
		this.name = name ;
	}
	public String getName(){
		return this.name ;
	}
}
public class ValueOfEnum{
	public static void main(String args[]){
		Color c = Color.valueOf(Color.class,"BLUE") ;	// 得到兰色
		c.setName("兰色") ;	 // 名字错误
		c.setName("蓝色") ;	 // 名字正确
		System.out.println(c.getName()) ;
	}
};



类集对Enum类的支持

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








JAVA笔记:枚举

标签:

原文地址:http://blog.csdn.net/tryitboy/article/details/42884481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!