黑马程序员——Java高新技术之枚举
来源:互联网 发布:base笔记软件 编辑:程序博客网 时间:2024/05/17 09:06
-------android培训、java培训、期待与您交流! ----------
枚举
枚举enum
枚举就是要让某个类型的变量的取值,只能为若干个固定值中的一个,否则,编译器报错
枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
枚举是一种特殊的类,枚举中的每一个元素都是一个实例对象
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
public abstract class WeekDay {//私有化该构造函数private WeekDay(){};//每一个元素都用静态来表示public final static WeekDay SUN = new WeekDay(){//每一个元素都覆盖其抽象方法public WeekDay nextDay() {// TODO Auto-generated method stubreturn MON;}};public final static WeekDay MON = new WeekDay(){@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn SUN;}};//抽象方法public abstract WeekDay nextDay();public String toString(){return this==SUN?"SUN":"MON";}}package enume;public class EumeDemo {public static void main(String []args){WeekDay weekday = WeekDay.MON;System.out.println(weekday.nextDay());}}枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。
把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
构造方法必须是私有的
在枚举对象后加上一个大括号,可以指定用那个构造方法
只要用到了枚举类,它里面的所有对象(元素)都会被初始化
枚举只有一个成员时,就可以作为一种单例的实现方式。
public enum WeedDay1{SUN(),MON,TUE,WED,THI,FRI,SAT;private WeedDay1() {System.out.println("WeedDay1 run");}private WeedDay1(int day){System.out.println("WeedDay1 day run");}}普通方法就是创建对象,然后调用
主要是抽象方法要注意,带有抽象方法的枚举, 每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。
public enum TrafficLamp{//这些是枚举对象,但是枚举中用了抽象方法,而抽象方法是不能有对象的,只有子类覆盖其所有抽象方法才可以,所以用到了内部类RED(30){public TrafficLamp nextLamp(){return GREEN;}},GREEN(45){public TrafficLamp nextLamp(){return YELLOW;}},YELLOW(5){public TrafficLamp nextLamp(){return RED;}};private int time;//构造方法private TrafficLamp(int time){this.time = time;}//抽象方法public abstract TrafficLamp nextLamp();}}枚举中的一些方法:
静态方法:
valueOf(Class<T> enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。
values()返回枚举内所有元素的数组
非静态:
name():返回常量名称
ordinal():返回枚举常量的位置
getClass():返回类名
public enum WeekDay {SUN(),MON,TUE,WED,THI,FRI,SAT;}public class demo {public static void main(String[] args) {WeekDay wd = WeekDay.FRI;System.out.println(wd.valueOf("SUN"));//返回指定的枚举元素 SUNSystem.out.println(wd.getClass());//返回类名class WeekDaySystem.out.println(wd.name());//返回枚举元素名FRISystem.out.println(wd.ordinal());//返回枚举元素位置5WeekDay[] dd = wd.values();//返回所有元素的数组for(WeekDay ww:dd){System.out.print(ww+" ");//SUN MON TUE WED THI FRI SAT }}}
0 0
- 黑马程序员——Java高新技术之枚举
- 黑马程序员——java高新技术:枚举
- 黑马程序员---java高新技术之枚举
- 黑马程序员---高新技术之枚举
- 黑马程序员---高新技术之枚举
- 黑马程序员----高新技术之 枚举
- 黑马程序员—JAVA高新技术之JavaBean
- 黑马程序员—JAVA高新技术之反射
- 黑马程序员—【Java高新技术】之反射
- 黑马程序员—java高新技术_枚举&反射&内省
- 黑马程序员 Java高新技术---枚举
- 黑马程序员--java高新技术----枚举
- 黑马程序员------java高新技术、枚举
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员——高新技术(枚举)
- 黑马程序员——高新技术--枚举
- 黑马程序员—java高新技术
- 黑马程序员_高新技术之枚举
- 第6周 项目4 - 数制转换
- 建立链栈算法库
- Android 5.1-手电筒应用小思路(三)
- C
- dom4j解析XML文件
- 黑马程序员——Java高新技术之枚举
- Oracle RAC 11g 安装测试问题小结(还未测试成功)
- 几个C++ 题目
- 在tableview中用动画效果改变cell的高度
- iOS 修改图片的亮度、对比度、饱和度
- Android的IPC机制——Binder (1)
- 第7周—项目3 负数把正数赶出队列
- 第二周项目3-体验复杂度(1)两种排序算法的运行时间
- 【队列项目1 - 建立顺序环形队列算法库——第6周】