黑马程序员——枚举类型

来源:互联网 发布:成都网络服务器租用 编辑:程序博客网 时间:2024/06/01 09:11

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! -------------------

枚举顾名思义就是把变量的值一个个的列举出来,而变量的值仅限于列举出来的值的范围之内。

枚举类型可以有自己的属性(参数)和方法,并且可以以独立的文件存在。


格式:

修饰符(public/private)enum 变量名{

元素1,元素2,............

举个例子:

public enum WeekDay{

MON,TUE,WEB,THU,FRI,SAT,SUN

}

需要说明的是:由于枚举类型的实例是变量,因此按照命名惯例它们都要用大写字母表示(如果一个名字中有多个单词,可用下划线将他们隔开)

为了更好的使用enum,需要创建一个该类型的引用实例,并将其赋值给某个实例

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package Test;  
  2.   
  3. public class enumTest {  
  4.   
  5.     public static void main(String[] args) {  
  6.         WeekDay weekday = WeekDay.MON;  
  7.         System.out.println(weekday);  
  8.     }  
  9. }  
在你创建enum时,编译器会自动添加一些有用的特性,如,它会创建toString()方法,以便于你可以很方便的显示某个enum实例的名字,编译器还会创建ordinal()方法,白哦是某个特定的enum常量的声明顺序。

下面来看一看代码:普通的枚举类

  1. package Test;  
  2.   
  3. public class enumTest {  
  4.   
  5.     public static void main(String[] args) {  
  6.         /* 
  7.          * WeekDay weekday = WeekDay.MON;  
  8.          * System.out.println(weekday.nextDay()); 
  9.          */  
  10.         WeekDay weekday = WeekDay.FRI;  
  11.         System.out.println(weekday);// 输出FRI元素  
  12.         System.out.println(weekday.ordinal());// 获取FRI常量的顺序  
  13.         System.out.println(WeekDay.valueOf("SUN").toString());// 将指定的字符串转换为WeekDay的枚举元素  
  14.         System.out.println(WeekDay.values().length);// 获取枚举对象中的元素  
  15.     }  
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1.      <pre code_snippet_id="289014" snippet_file_name="blog_20140412_3_2231764" class="java" name="code">// 普通枚举类  
  2.     public enum WeekDay {  
  3.         /* 
  4.          * 需要说明的是,元素一定要放在方法的前面,并且还应带有;分号 元素后面可以跟括号,需要指定顺序 
  5.          */  
  6.         MON(1), TUE, WEB, THU, FRI, SAT, SUN;  
  7.         private WeekDay() {  
  8.             System.out.println("frist");  
  9.         }  
  10.   
  11.         private WeekDay(int day) {  
  12.             System.out.println("second");  
  13.         }  
  14.     }  
  15. }
  16. 抽象的枚举类: 
  17. name="blog_20140412_4_9658252" class="java" name="code">// 抽象枚举类  
  18.     public enum TrafficLamp {//交通灯,有三个元素,红灯(red),绿灯(green),黄灯(yellow)  
  19.         //子类RED,GREEN,YELLOW要重写父类的构造方法,调用父类的有参的构造方法  
  20.        RED(30){//红灯赋值为30秒  
  21.         @Override  
  22.         public TrafficLamp nextLamp() {  
  23.             // TODO Auto-generated method stub  
  24.             return null;  
  25.         }  
  26.              
  27.        },  
  28.        GREEN(45){//绿灯赋值45秒  
  29.   
  30.         @Override  
  31.         public TrafficLamp nextLamp() {  
  32.             // TODO Auto-generated method stub  
  33.             return null;  
  34.         }  
  35.              
  36.        },  
  37.        YELLOW(5){//黄灯赋值5秒  
  38.   
  39.         @Override  
  40.         public TrafficLamp nextLamp() {  
  41.             // TODO Auto-generated method stub  
  42.             return null;  
  43.         }  
  44.              
  45.        };  
  46.        public abstract TrafficLamp nextLamp();//定义了一个下一个灯的抽象方法  
  47.        private int time;//定义一个交通灯的时间变量  
  48.        private TrafficLamp(int time){this.time=time;}  

------------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com

0 0