【JAVA基础】枚举(enum)用法
来源:互联网 发布:office卸载软件 编辑:程序博客网 时间:2024/06/05 09:36
一些程序在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,jdk5以前采用自定义类来解决,jdk5以后可以直接采用枚举来解决
枚举的特性
1、枚举是一种特殊形式的java类
2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象
3、与java中的普通类一样,在声明枚举;类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的
4、枚举类也可以实现接口或继承抽象类
5、jdk5中扩展了switch语句,它除了可以接收int,byte,char,short外,还可以接收一个枚举类型
用法一:常量
在jdk1.5之前,我们定义常量都是:public static final….。jdk1.5出现以后,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
enum Grade{ //Class A,B,C,D; //Object}
用法二:switch
jdk1.6之前的switch语句只支持int,byte,char,short,enum类型。
enum Grade{ A,B,C,D;}public class Demo{ Grade grade=Grade.A; public void test(){ switch(grade){ case A: grade=Grade.A; break; case B: grade=Grade.B; break; case C: grade=Grade.C; break; case D: grade=Grade.D; break; } }}
用法三:向枚举中添加新方法
如果打算定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且java要求必须先定义enum实例。
enum Grade{ A("100-80"),B("79-70"),C("69-60"),D("59-0"); //成员变量 private String value;//封装每个对象对应的分数 //构造方法 public Grade(String value){ this.value=value; } //普通方法 public static String getName(int index){ for(Grade g:Grade.values()){ if(g.getValue()==value){ return g.value; } } return null; } //get set方法 public String getValue(){ return this.value; } public void setValue(){ this.value=value; }}
用法四:覆盖枚举的方法
下面是一个toString()方法覆盖的例子
public class Demo{ enum Grade{ A("100-80"),B("79-70"),C("69-60"),D("59-0"); //成员变量 private String value; //构造方法 private Grade(String name){ this.value=value; } //覆盖方法 @Override public String toString(){ return this.value; } } public static void main(String[] args){ System.out.println(Grade.A.toString()); }}
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于java不支持多继承,所以枚举对象不能再继承其他类。
public interface Behaviour { void print(); String getInfo(); } public enum Grade implements Behaviour { A("100-80"),B("79-70"),C("69-60"),D("59-0");; // 成员变量 private String value; // 构造方法 private Grade(String value) { this.value= value; } // 接口方法 @Override public String getInfo() { return this.value; } // 接口方法 @Override public void print() { System.out.println(this.value); } }
用法六:使用接口组织枚举
public interface Food { enum Coffee implements Food { BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO } enum Dessert implements Food { FRUIT, CAKE, GELATO } }
用法七:
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型,具体可以参考JDK API文档。
枚举和常量定义的区别
1、通常定义常量的方法
通常利用public final static方法定义的代码如下,分别用1表示A,2表示B,3表示C。
public class Grade{ /*A*/ public final static int A = 1; /*B*/ public final static int B = 2; /*c*/ public final static int c = 3;}
2、枚举类型定义常量方法
枚举类型的简单定义方法如下:
enum Grade{ A,B,C;}
- 【JAVA基础】枚举(enum)用法
- java基础---枚举(enum)
- 【java】枚举enum用法
- java基础:enum枚举
- Java基础:枚举Enum
- java基础-enum 枚举
- Java Enum(枚举一)的用法
- Java 枚举(Enum)的用法
- Java 枚举(enum)的用法
- Java 枚举(enum)用法详解
- JAVA基础加强:枚举(Enum)
- JAVA枚举ENUM用法详解
- Java enum枚举的用法
- Java Enum 枚举用法详解
- java enum枚举的用法
- Java 枚举(enum) 常见用法
- Java枚举enum的用法
- JAVA基础---枚举Enum 反射
- D3.js version4教程(3)
- 算法提高 金明的预算方案 有依赖的背包问题
- Visual Studio 秘钥
- 实现摄像头内容的网页播放
- D3.js version4教程(4)
- 【JAVA基础】枚举(enum)用法
- 由一个简单例子上手neon
- 171202之ajax提交整个form表单(一)
- D3.js version4教程(5)
- C++ primer 第五版 第五章练习答案
- [Javascript 高级程序设计]学习心得记录8 引用类型(下)
- C++编程中类CALSS的编写(一):不含指针数据的类
- D3.js version4教程(6)
- linux(CentOS6.5)下安装Mysql5.6教程