您的位置:首页 > 职场人生

黑马程序员----Java 枚举

2014-06-28 11:27 197 查看
------- android培训java培训、期待与您交流! ----------

可以把枚举看成一个类,但是这个类有些特殊,他的构造方法只能被private修饰,也就是说枚举不能被实例化。

不能被实例化的类的内部肯定会有获得这个类对象的方法,而枚举中的元素就是被实例化的对象。

先定义一个最简单的枚举:

public enum Lamp{
RED,GREEN,YELLOW;
}


 

枚举还可以有自定义的构造方法:

public enum Lamp{
RED(30), //使用的是带参数的构造函数                                                                 GREEN(), //使用的是无参数的构造函数                                                                 YELLOW;
//和上面的格式一样
private Lamp(){}
private Lamp(int time){System.out.println("灯亮的持续时间为"+time+"秒");}
}


 

枚举和普通类一样,可又有自己的成员变量和成员方法,比较特殊的是如果是抽象方法那么那些元素必须实现这个抽象函数(采用内部类的方式),这和抽象类是一样的。

public enum Lamp{
RED(30){
public Lamp nextLamp()
{
return GREEN;
}
},
GREEN(){
public Lamp nextLamp()
{
return YELLOW;
}
},

YELLOW{
public Lamp nextLamp()
{
return RED;
}
};

int time;
private Lamp(){}
private Lamp(int time){
this.time = time;
System.out.println("灯亮的持续时间为"+time+"秒");}
public abstract Lamp nextLamp();//打印出下一个灯是什么
}

}


枚举的使用:

枚举的常用方法:

public class Enumdemo {

public static void main(String[] args) {
Lamp lamp1 = Lamp.GREEN;
System.out.println(Lamp.RED.nextLamp());//使用它的函数
System.out.println(Lamp.GREEN.ordinal());
System.out.println(Lamp.GREEN.toString());
System.out.println(Lamp.GREEN.equals(Lamp.YELLOW));//比较次序
//如果想通过枚举的字符串名称获得与之对应的元素对象使用valueOf
Lamp lamp2 = Lamp.valueOf("RED");
//获得所有枚举元素,也可以获得这个数组的长度
Lamp[] lamps = Lamp.values();
System.out.println(lamps.length);
}


如有疑问的同学,请参看:http://heimacxy.blog.163.com/blog/static/1903840442011611112028947/  或  http://www.cnblogs.com/hm-chentao
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: