Java枚举
枚举类型可以取代以以往常量的定义,即将常量封装在的类或接口中,此外,枚举它还提供了安全检查功能。枚举类型本质上还是以类的形式存在。使用枚举类型可以取代以往常量的方式,同时枚举类型还赋予程序在编译时进行检查。
使用枚举类型设置常量:
interface Constants{
//将常量放置在接口
public static final int Constants_A = 1;
public static final int Constants_B = 2;
}
public class ConstantsTest {
enum Constants2{
//将常量放置在枚举类型中
Constants_A,Constants_B
}
//使用接口定义常量
public static void doit(int c){//定义一个方法,这里参数为int型
switch(c){//根据常量的值做不同操作
case Constants.Constants_A:
System.out.println("doit() Constants_A");
break;
case Constants.Constants_B:
System.out.println("doit() Constants_A");
break;
}
}
public static void doit2(Constants2 c){//定义一个参数对象的枚举类型的方法
switch(c){
case Constants_A:
System.out.println("doit2() Constants_A");
break;
case Constants_B:
System.out.println("doit2() Constants_B");
}
}
public static void main(String[] args) {
ConstantsTest.doit(Constants.Constants_A);//使用接口中定义的常量
ConstantsTest.doit2(Constants2.Constants_A);//使用接口中定义的常量
ConstantsTest.doit2(Constants2.Constants_A);//使用接口中定义的常量
//ConstantsTest.doit(3);//使用接口中定义的常量
}
}
运行结果:
枚举类型常用的方法:
1、values()
该方法将枚举类型的成员变量示例以数组的形式返回,也可以通过该方法取值
/**
* values()
*
* values()方法将枚举类型的成员变量示例以数组的形式返回
* @author 我是灰太狼
*
*/
public class ShowEnum {
enum Constants2{//将常量放置在枚举类型中
Constants_A,Constants_B
}
//循环有values()方法返回的数组
public static void main(String[] args) {
for (int i = 0; i < Constants2.values().length; i++) {
System.out.println("枚举类型成员变量:"+Constants2.values()[i]);
}
}
}
运行结果:
2、valueOf()与compareTo()
valueOf()可以将普通字符串转换为枚举类型,compareTo()方法用于比较两个枚举类型对象定义时的顺序
/**
* valueOf()与compareTo()
*
* valueOf()可以将普通字符串转换为枚举类型
* compareTo()方法用于比较两个枚举类型对象定义时的顺序
* @author 我是灰太狼
*
*/
public class EnumMethodTest {
enum Constants2{//将常量放置在枚举类型中
Constants_A,Constants_B
}
//定义比较枚举类型方法,参数类型为枚举类型
public static void compare(Constants2 c){
//根据values方法返回的数组做循环操作
for (int i = 0; i < Constants2.values().length; i++) {
//将比较结果返回
System.out.println(c+"与"+Constants2.values()[i]+"的比较结果为:"
+c.compareTo(Constants2.values()[i]));
}
}
//在主方法调用compare()方法
public static void main(String[] args) {
compare(Constants2.valueOf("Constants_B"));
}
}
运行结果:
3、ordinal
枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值
/**
* ordinal()
* 枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值
* @author 我是灰太狼
*
*/
public class EnumIndexTest {
enum Constants2{//将常量放置在枚举类型中
Constants_A,Constants_B
}
public static void main(String[] args) {
for (int i = 0; i < Constants2.values().length; i++) {
//在循环中获取枚举类型成员的索引位置
System.out.println(Constants2.values()[i]+"在枚举类型中的位置索引值"
+Constants2.values()[i].ordinal());
}
}
}
运行结果:
使用枚举类型的优势:
枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。枚举类型,它具有以下特点:
1、类型安全。
2、紧凑有效的数据定义。
3、可以和程序其他部分完美交互。
4、运行效率高。