`
chaoyi
  • 浏览: 290378 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

枚举的作用

 
阅读更多

本章目标
掌握枚举的作用
可以使用enum关键字定义一个枚举类

 

枚举类型简介
在JDK 1.5之前,JAVA可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有 Red、Green、Blue三种值,其他的任何值都是非法的,那么JDK 1.5之前虽然可以构造这样的代码,但是要做很多的工作,也有可能带来各种不安全的问题。而JDK 1.5之后引入的枚举类型(Enum)就能避免这些问题。

 

使用简单类完成枚举操作

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;
	//构造方法私有化,同时设置颜色的名称
	public Color(String name) {
		this.name = name;
	}
	public String getName() {//取得颜色名称
		return name;
	}
	public void setName(String name) {//设置颜色名称
		this.name = 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());//输出名字
	}
/* 结果:
 * 红色
 * 蓝色
 * */
}

 

使用接口表示一组范围

public interface Color {
	public static final int RED = 1;//表示红色
	public static final int GREEN = 2;//表示绿色
	public static final int BLUE = 3;//表示蓝色
}

 

代码的问题

public class ColorDemo02 {
	public static void main(String[] args) {
		System.out.println(Color.RED+Color.GREEN);//颜色相加
	}
/* 结果:
 * 3
 * */
}

 

定义一个枚举类型
在JDK 1.5之后,引入了一个新的关键字类型 —— enum,可以直接定义枚举类型,格式如下:
——[public] enum 枚举类型名称{
  枚举对象1,枚举对象2,…,枚举对象n ;
  }

定义一个Color的枚举类型

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

 

 

取出一个枚举内容

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

 

使用foreach输出枚举内容

public class PrintEnum {
	public static void main(String[] args) {
		for(Color c : Color.values()){//枚举.values() 表示得到全部枚举的内容
			System.out.println(c);//输出枚举内容
		}
	}
/* 结果:
 * RED
 * GREEN
 * BLUE
 * */
}

 

使用switch进行判断

public class SwitchPrintDemo {
	public static void main(String[] args) {
		for(Color c : Color.values()){//枚举.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 ;
		}
		}
	}
/* 结果:
 * 红颜色
 * 绿颜色
 * 蓝颜色
 * */
}

 

 

 

 

 

分享到:
评论

相关推荐

    C++枚举类型enum与enum class的使用

    一.关于枚举类型 1. 什么是枚举类型?...答:枚举作用域是指枚举类型成员名字的作用域,起自其声明之处,终止枚举定义结束之处。enum与class enum区别在于是否限定其作用域。C语言规定,枚举类型(e

    关于java枚举ppt

    枚举的简单的介绍 枚举的作用 1.枚举可以实现一个或多个接口 2.可以定义新的变量 3.可以定义新的方法 4.可以定义根据具体枚举值而相异的类

    STM32f103做HID时某些电脑枚举不成功,修改库后可以成功

    使用STM32的库进行USB-HID开发时,会出现某些电脑枚举不出设备的情况,通过bus hound 来抓包分析会出现 PC 发送set idle命令下去后,从设备没有响应,所以PC变为stall状态,之后枚举失败。通过分析源代码和HID协议,...

    浅谈Java枚举的作用与好处

    下面小编就为大家带来一篇浅谈Java枚举的作用与好处。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    详解C++11强类型枚举

    1.传统枚举类型的缺陷 ...传统C++中枚举常量被暴漏在同一层作用域中,如果同一作用域下有两个不同的枚举类型,但含有同名的枚举常量也是会报编译错误的,比如: enum Fruits{Apple,Tomato,Orange}; enum Vegetable

    linxing58#MdNote#11.枚举1

    1. 不适用枚举存在的问题 2. 枚举的作用与应用场景 3. 枚举的基本语法 4. 枚举的应用 5. 小结

    枚举和宏的区别详细解析

    枚举常量具有类型,但宏没有类型,枚举变量具有与普通变量相同的诸如作用域、值等性质,但宏没有,宏不是语言的一部分,它是一种预处理替换符。枚举类型主要用于限制性输入,例如,某个函数的某参数只接受某种类型中...

    Python学习之路——枚举类

    枚举的作用二、代码实现1. Enum类2. IntEnum类3. IntFlag类4. Flag类5. unique装饰器6. auto函数三、官方文档 前言: 首先大家要明白的是:枚举类不是Python的原生类!不是原生类!不是!Python中的枚举类是依靠 enum...

    感受一下Java中的“枚举类型”

    ”,有这个疑问说明你已经摸索到了枚举类型的主要功能:以统一命名的常量来替换变化无常的直接量,这是毫无疑问是枚举的主要作用,在大多数情况下,用static final是足够的,所以N多知名的源码里我们会经常看到用...

    Android使用注解代替枚举节省系统内存开销的方法

    Java5以后开始支持枚举类型,枚举类型使用起来非常方便,其重要的作用是作为类型安全使用的。如果在不考虑系统内存开销的情况下大量的使用枚举也不会有什么问题。但是移动端还是需要注意的。 android系统在应用启动...

    Java+单例+多例+工厂+枚举+动态代理===》演示

    #### 多例设计模式的作用 多例模式,是一种常用的软件设计模式。通过多例模式可以保证系统中,应用该模式设计的类有**固定数量**的对象产生。 **说白了,多例设计模式就是保证使用该模式的类会有固定数量的该类对象...

    【后端】java基础(5.6)java高级基础之枚举

    java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小。 创建的时候前面和创建类、接口一样,在new之后,我们选择enum即可。表面上...

    更好的枚举:C ++编译时枚举在单个头文件中的字符串,迭代

    该库确实提供了作用域和大小不等的枚举,而C ++ 98并未内置。 请参阅以获取完整文档。 安装 只需将enum.h添加到您的项目中即可。 附加功能 但是,仅使用标准C ++,对于C ++ 98,需要可变参数宏支持(主要编译器都...

    switch语句能否作用在byte上,能否作用在long上,能否作用在String上

     在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也...

    C#中枚举的特性 FlagAttribute详解

    Flag 特性微软的解释是:指示可以将枚举作为位域(即一组标志)处理,FlagsAttribute属性就是枚举类型的一项可选属性,它的主要作用是可以将枚举作为位域处理(P.S. C#不支持位域)。所谓位域是单个存储单元内相邻二...

    2023-04-06-项目笔记-第一阶段-4.5.4 枚举常量

    2023-04-06-项目笔记-第一阶段-4.3.1 变量的使用 4.4 变量的作用域与生命周期 4.4.1 局部变量的作用域 4.4.2 全局变量的作用域 4.4.3 局部变量的生命周期 4.4.4 全局变量的生命周期 4.5.1 字面常量 4.5.2 const 修饰...

    《C深度解析》第7、8章 结构体/共用体/枚举,杂项(自动类型转换、大小端序等)

    2. 共用体共用体与结构体的异同、共用体的作用、共用体举例3. 枚举第8章:自动类型转换、大小端序、typedef、编译器优化、extern "C"、程序调试、变参函数、do{}while(0)、内嵌汇编、调试版与发行版、断言

Global site tag (gtag.js) - Google Analytics