----------------------android培训,java培训、期待与您交流! ----------------------
枚举:
枚举是jdk1.5的一个新特性.很多时候,不同的程序员会对某一个的对象起不同的名字,这么一来,明明是同一个对象,却有了很多不同的名字,就会引起很多不必要的麻烦.比如颜色,中国人叫”红色”,美国人叫”RED”,法国人又叫其他的.这不就很麻烦了吗? 要是可以规定这个颜色不管哪个国家的人都这样叫,这样不是很好吗?枚举就是干了这样一件事. 程序员把把指定对象的名字用枚举规定好了,不管哪个程序员都要按照规定来使用这个对象,这样就能避免很多麻烦了!
创建一个枚举:
enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum)。它们继承了这个Enum中的许多有用的方法。
因为枚举中的值全部都是public finally static的,所以他们都是常量,所以在定义的时候要全部大写.
枚举既然是一个类,那么就可以定义构造方法,和普通方法
注意:
1. 枚举中所有的方法都要定义在枚举值的下面,因为这些值对象都是静态的,所有要放在最上面.
2. 枚举的构造方法必须是private的
3. 枚举的构造方法可以是有参数的,也可以是没有参数的,当要调用有参数的构造放的的时候,就要在枚举值后面加上( ),并且在里面传递参数
枚举中的每一个值都是一个对象完整写法是public finally static Enum e= new Enum();
当定义了抽象方法的时候,这个函数就不能创建对象了,这时就需要使用匿名内部类来重写抽象方法了
枚举中的一个比较重要的方法: valueOf(String). 从外界传入一个参数,然后得到这个参数对应的枚举对象 . 比如 : TrafficEnum .valueOf(“SUN”) 得到枚举的SUN对象
publicclass TrafficEnum {
/**
* @param args
*/
publicstaticvoid main(String[] args) {
//TODO Auto-generated method stub
TrafficLamp tfl=TrafficLamp.GREEN.nextLamp();
System.out.println(tfl);
}
}
enum TrafficLamp{
RED(){
@Override
public TrafficLamp nextLamp() {
//TODO Auto-generated method stub
returnGREEN;
}
},GREEN(){
@Override
public TrafficLamp nextLamp() {
//TODO Auto-generated method stub
returnYELLOW;
}
},YELLOW(){
@Override
public TrafficLamp nextLamp() {
//TODO Auto-generated method stub
returnRED;
}
};
publicabstract TrafficLamp nextLamp();
}
---------------------- android培训,java培训、期待与您交流! ----------------------
详细请查看http://edu.youkuaiyun.com/heima