日期:2014-05-20  浏览次数:20819 次

枚举类型究竟是什么呢,有什么作用?
枚举类型究竟是什么呢,有什么作用?

------解决方案--------------------
举个常用的例子,你要表示星期1-7,你可以用int1-7,但是当你把它作为参数的时候,有时后你就给考虑传入0,8的情况.而且用数字表示还需要相应的注释和文档.
这个时候你定义个一个枚举,名字就叫字面就叫Monday , Tuesday ,....就行,直观,并且值可控.
------解决方案--------------------
整形枚举
enum LevelsType{
LEVEL1 = 1,
LEVEL2 = 2,
LEVEL3 = 3,
LEVEL4 = 4
};
字符型枚举
public enum CarEnum {

BMW("BMW"), TOYOTA("TOYOTA"), FIAT("FIAT");
private String CarType;

private CarEnum(String CarType) {
this.CarType = CarType;
}

public String getCarType() {
return CarType;
}
}


枚举测试:

public class EnumTest {
static CarEnum mycar;
public static void main(String args[])
{
System.out.println(mycar.BMW.getCarType());
}
}

LZ跑跑这个程序,应该就有对EMUN的一点感觉了


------解决方案--------------------
规则与意义

l 枚举类型使代码更具可读性,理解清晰,易于维护。在Visual Stuido 2008等编译工具中,良好的智能感知为我们进行程序设计提供了更方便的代码机制。同时,如果枚举符号和对应的整数值发生变化,只需修改枚举定义即可,而不必在漫长的代码中进行修改。

l 枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。例如:

public static void Main()

{

LogLevel log = LogLevel.Information;

GetCurrentLog(log);

}

private static void GetCurrentLog(LogLevel level)

{

Console.WriteLine(level.ToString());

}

试图为GetCurrentLog方法传递整数或者其他类型参数将导致编译错误,枚举类型保证了类型的安全性。

l 枚举类型的默认值为0,因此,通常给枚举成员包含0值是有意义的,以避免0值游离于预定义集合,导致枚举变量保持非预定义值是没有意义的。另外,位枚举中与0值成员进行“位与”运算将永远返回false,因此不能将0值枚举成员作为“位与”运算的测试标志。

l 枚举的声明类型,必须是基于编译器的基元类型,而不能是对应的FCL类型,否则将导致编译错误。