Java为什么要枚举
导语:每个元素分别用一个公有的静态成员变量表示,再组合成类,下面是关于Java语言枚举的原因,欢迎参考!
问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,
但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。
枚举可以让编译器在编译时就可以控制源程序中填写的非法值,
普通变量的方式在开发阶段无法实现这一目标。
**用普通类如何实现枚举的功能?定义一个Weekday类来模拟实现:
步骤:
*私有化构造方法
*每个元素分别用一个公有的静态成员变量表示(public static final)
*可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的语句
转移成了一个个独立的类。
**枚举的应用:
举例:定义一个Weekday的枚举。
扩展:枚举类的values,valueOf,name,toString,ordinal等方法
(记住,讲课时要先于自定义方法前介绍,讲课更流畅)
总结:枚举是一种特殊的类,其中的'每个元素都是该类的一个实例对象。
例如可以调用lass()ame和ame()。
**枚举的高级应用:
**枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
**枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。
把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
**带构造方法的枚举
构造方法必须定义成私有的
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
**带方法的枚举
定义枚举TrafficLamp
实现普通的next方法
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,
这些子类采用类似内部类的方式进行定义。增加上表示时间的构造方法
**枚举只有一个成员时,就可以作为一种单例的实现方式。
-
java与JavaScript语言有何不同
java和JavaScript是两个不同的语言。那么这两个语言有什么不同呢?下面本站小编带大家一起来看看详细内容,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!讲个故事:话说很久很久以前,有一个叫网景(Netscape)的,十月怀胎,他生了个儿子,很开兴,...
-
初学java编程入门必备的知识
基础知识是新手学习一门新技术的必须掌握的,下面内容由小编为大家介绍初学java编程入门必备的知识,供大家参考!01、Java编程出现的背景1991年Sun公司的JamesGosling等人开始开发名称为Oak的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器,但却没有取得...
-
java语言运算符的使用
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面小编整理了java语言运算符的使用,希望对大家有帮助!赋值运算符的使用=、+=、-=、*=、/=、%=算术运算符的使用算术运算就是咱们生活中常见的加、...
-
Java内存溢出的解决方法
一、内存溢出类型1、fMemoryError:PermGenspaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太...