一、什么是枚举

  值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

  枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 [1]  。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
 

二、枚举的使用

  1、枚举的定义和简单访问

package com.test;

public class EnumProgram {
//获得枚举的常量
Signal number = Signal.FOUR;
int n = 0;
//定义一个方法
public void calculation(){
switch (number){
case ONE:
n=1;
break;
case TWO:
n=2;
break;
case Three:
n=3;
break;
case FOUR:
n=4;
break; }
} public static void main(String[] args) {
EnumProgram en = new EnumProgram();
System.out.println(en.n);
en.calculation();
System.out.println(en.n); System.out.println(Signal.Three); } } //创建一个枚举,里面放了 ONE,TWO,Three,FOUR 四个常量
enum Signal{
ONE,TWO,Three,FOUR
}

结果:

  2、向枚举中添加方法

package com.test;

public class EnumProgram {
public static void main(String[] args) {
//使用
System.out.println(Color.BULE.getName());
System.out.println(Color.BULE.getIndex());
System.out.println(Color.getColorName(1));
System.out.println(Color.getColorIndex("绿色"));
}
} //创建一个枚举
enum Color{
RED("红色",1),BULE("蓝色",2),GREEN("绿色",3),WHITE("白色",4);
private String name;
private int index; //构造函数
private Color(String name,int index){
this.name=name;
this.index=index;
}
//枚举方法
public static String getColorName(int index){
for(Color c : Color.values()){
if(c.getIndex()==index){
return c.getName();
}
}
return null;
} //枚举方法
public static int getColorIndex(String name){
for(Color c : Color.values()){
if(c.getName()==name){
return c.getIndex();
}
}
return -1;
} 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;
}
}

结果:

   3、枚举类继承接口
package com.test;

public class EnumProgram {
public static void main(String[] args) {
//使用
Color.BULE.print();
}
} //定义一个接口
interface FunRea{
void print(); //定义一个方法
} //创建一个枚举,继承接口
enum Color implements FunRea{
RED("红色",1),BULE("蓝色",2),GREEN("绿色",3),WHITE("白色",4);
private String name;
private int index; //构造函数
private Color(String name,int index){
this.name=name;
this.index=index;
} //实现接口的方法
@Override
public void print() {
System.out.println(this.name+" : "+this.index);
} 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;
} }

结果:

 
 
 
 
 
 
 
 
 
 
 
 
 

最新文章

  1. Linux 内核版本命名
  2. 简单理解php的socket编程
  3. unsigned long类型转换为CString出现的问题
  4. 【VerySky原创】 ME9F
  5. mvc edmx 的config文件
  6. java构造函数,java的静态块理解
  7. object在ie8与ie9中与下文多出几像素问题
  8. POJ 2249 Binomial Showdown
  9. HDU-4618 Palindrome Sub-Array 暴力枚举
  10. yii2源码学习笔记(二十)
  11. Mysql group_concat函数被截断的问题
  12. 如何使用LoadRunner监控Windows
  13. C# 初识Ref和Out
  14. 【BZOJ3143】游走(高斯消元,数学期望)
  15. Redis in .NET Core 入门:(2) String
  16. hibernate 查询字段是重复名字的处理方法
  17. linux sort排序命令的高级用法(按多个列值进行排列)
  18. Pytorch tutorial 之Datar Loading and Processing (2)
  19. SpringMVC(十五) RequestMapping map模型数据
  20. c#的委托用法delegate

热门文章

  1. [原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
  2. Maven--设置Http代理
  3. 添加并启动MySQL服务
  4. 洛谷P1435 回文子串
  5. Educational Codeforces Round 78 (Rated for Div. 2)B. A and B(1~n的分配)
  6. video文件转blob
  7. text-overflow属性
  8. Java 网址短链接服务原理及解决方案
  9. 部署企业本地yum源及源码包安装
  10. 01-信贷路由项目架构和 rose 框架的搭建