枚举类型究竟是什么呢,有什么作用? 枚举类型究竟是什么呢,有什么作用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 举个常用的例子,你要表示星期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的一点感觉了 其实枚举不是java的首创,好像在JDK1.5版本之前就没有引入这个概念。其实我个人觉得枚举用处不大,用其他方法一样可以实现。常量接口中的常量同样可以起到作用。 Java5 以后的新特性。其功能类似于public static final int ONE = 1; 个人认为纯属鸡肋,有没有都一样。反正我从来不用,能看懂别人写的枚举代码就行了。 赞同,觉得和public static final ~ 差不多。从来不用泛型。2楼的例子也编译不通过。 yes,现实项目中用静态常量的更普遍。 规则与意义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类型,否则将导致编译错误。 这是从别处转来的 原文地址:http://book.csdn.net/bookfiles/684/10068421452.shtml 题目叫做 简易不简单。感觉这个题目真的很符合 枚举类型。 不管在 JDK 5 中,还是 JDK 5 之前采用面向对象的方式都可以实现类型安全枚举类型。枚举可以限定参数的个数,对调用者的行为能更加严格地进行控制。把一些运行期的参数检查放到了编译期,做到这点是一个很大的进步。 java是因为被诟病没有枚举,在jdk1.5后加上java.lang.Enum。使用时用关键字enum来代表,枚举中也可以定义方法和属性,但是构造方法一定是私有的相比其他语言确实是鸡肋。 同样的疑问。public static final Color color1 = new Color(255,255,0); public static final Color color2 = new Color(255,0,0); 不也做到了限定参数个数,限制调用,编译期即决定了参数类型实例了么? 对,这种写法是 enum 被编译后的方式,也是 JDK 5 之前实现枚举类的方法!enum 类被编译之后,产生的字节码也是类似于这些代码产生的字节码,也就是说 JDK 5 中的 enum 只是在语法层次上写法,底层机制没有任何改变,或者说 JDK 5 中的 enum 只是一个糖衣而已。 我觉得楼上引用别人帖子的那位兄弟写的很清楚了 可以保证安全性 虽然你可以用静态常量定义来替代枚举 但是当枚举作为参数时更安全 比如一个表示星期一到星期天的枚举是一个方法的参数 这时候如果你给这个方法传个参数9来调用就会报错 但是如果这个方法的参数是int 你只要传的是整形都不会报错 而且 在在定义一些值的时候你难道不觉得省力了许多吗? 如果要你定义100个常量的时候你就知道枚举的好了 包糖衣还是很有用的! java截屏问题求助 请高手帮忙 JAVA Calendar 类 setFirstDayOfWeek 方法详解 JTextField的奇怪问题,谢谢各位了 关于Inner class的问题,民女在线等待,给分!!! 为什么运行不了?求救 谁有Java扑克牌的源代码,百分相送!! 请问怎样才能在jTable中单击一个单元格后将其中的数据提取出来? break在java里是跳出所有循环吗? Java 中的命令行参数怎么用代码行来表示? split("\\|")对于空字符串,为什么是1 帮忙解决一个问题
这个时候你定义个一个枚举,名字就叫字面就叫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的一点感觉了
其实我个人觉得枚举用处不大,用其他方法一样可以实现。
常量接口中的常量同样可以起到作用。
public static final int ONE = 1;
个人认为纯属鸡肋,有没有都一样。
反正我从来不用,能看懂别人写的枚举代码就行了。
从来不用泛型。2楼的例子也编译不通过。
原文地址:
http://book.csdn.net/bookfiles/684/10068421452.shtml 题目叫做 简易不简单。感觉这个题目真的很符合 枚举类型。
相比其他语言确实是鸡肋。
public static final Color color1 = new Color(255,255,0);
public static final Color color2 = new Color(255,0,0);
不也做到了限定参数个数,限制调用,编译期即决定了参数类型实例了么?
对,这种写法是 enum 被编译后的方式,也是 JDK 5 之前实现枚举类的方法!enum 类被编译之后,产生的字节码也是类似于这些代码产生的字节码,也就是说 JDK 5 中的 enum 只是在语法层次上写法,底层机制没有任何改变,或者说 JDK 5 中的 enum 只是一个糖衣而已。