日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
講解一下java枚舉(enum)以及使用方法

在實(shí)際編程中,往往存在著這樣的“數(shù)據(jù)集”,它們的數(shù)值在程序中是穩(wěn)定的,而且“數(shù)據(jù)集”中的元素是有限的。

例如星期一到星期日七個(gè)數(shù)據(jù)元素組成了一周的“數(shù)據(jù)集”,春夏秋冬四個(gè)數(shù)據(jù)元素組成了四季的“數(shù)據(jù)集”。

enum 的全稱為 enumeration, 是 JDK 1.5 中引入的新特性,存放在 Java.lang 包中,在上面的這種情況下,enum就能派上用場(chǎng)了。枚舉類型的用途不僅如此,具體可用場(chǎng)景可看下面的介紹

1、常量

以前我們定義一個(gè)常量通常都是使用 public static final …… 定義的,如下面:

public static final CONSTANT_STR = "TEST";

或者使用接口定義的變量,因?yàn)榻涌诙x的變量默認(rèn)都是public static final,如下:

/**
* 星期的常量接口
*/
public interface IWeekConstants {
   String MON = "Mon";
   String TUE = "Tue";
   String WED = "Wed";
   String THU = "Thu";
   String FRI = "Fri";
   String SAT = "Sat";
   String SUN = "Sun";
}

有了枚舉我們可以使用下面的方式:

public enum WeekEnum {
   MON, TUE, WED, THU, FRI, SAT, SUN;
}

解釋:創(chuàng)建枚舉類型要使用 enum 關(guān)鍵字,隱含了所創(chuàng)建的類型都是 java.lang.Enum 類的子類(java.lang.Enum 是一個(gè)抽象類)。枚舉類型符合通用模式 Class Enum > ,而 E 表示枚舉類型的名稱。枚舉類型的每一個(gè)值都將映射到 protected Enum(String name, int ordinal) 構(gòu)造函數(shù)中,在這里,每個(gè)值的名稱都被轉(zhuǎn)換成一個(gè)字符串,并且序數(shù)設(shè)置表示了此設(shè)置被創(chuàng)建的順序。

上面那段代碼聲明的enum對(duì)象實(shí)際上調(diào)用了7次Enum(String name, int ordinal) 這個(gè)構(gòu)造函數(shù)。(name 是常量,上面是MON,TUE等,ordinal是被創(chuàng)建順序)

new Enum
  
   (
   "MON",0); new Enum
   
    (
    "TUE",1); new Enum
    
     (
     "WED",2); 。。。。。。 
    
   
  

2、switch

當(dāng)我們用switch時(shí),一般都是使用int和char,但其實(shí)枚舉也可以用在switch中,而且可能使用枚舉,可以讓我們的代碼的可讀性更強(qiáng)。下面是枚舉使用enum的例子

enum Color{  
   GREEN, YELLOW, RED  
}  
public class TrafficLight {  
   Color color = Color.RED;  
   public void change() {  
       switch (color) {  
       case RED:  
           System.out.println("紅色");  
           break;  
       case YELLOW:  
           System.out.println("黃色");  
           break;  
       case GREEN:  
           System.out.println("綠色");  
           break;  
       }  
   }  
}  

3、向枚舉中添加新方法 + 遍歷

我們使用常量的時(shí)候,我們使用接口的時(shí)候是可以有值與之對(duì)應(yīng)的,如上面IWeekConstants 接口的MON的值是Mon,但枚舉好像沒能標(biāo)示出這種意義。下面我們就討論該方式的實(shí)現(xiàn)和枚舉類型的遍歷

枚舉類型提供了構(gòu)造函數(shù),我們可以通過構(gòu)造函數(shù)和覆寫toString方法來實(shí)現(xiàn)。實(shí)現(xiàn)代碼如下:

package com.zcr.test;

enum ActionTypeEnum{
   //通過括號(hào)賦值,而且必須帶有一個(gè)參構(gòu)造器和一個(gè)屬性跟方法,否則編譯出錯(cuò)
   //賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;如果不賦值則不能寫構(gòu)造器,賦值編譯也出錯(cuò)
   下載(1,"xiazai"),訪問(2,"fangwen");
   int index;
   String name;
   
   private ActionTypeEnum(int index,String name){
       this.index = index;
       this.name = name;
   }

   public int getIndex()
   {
       return index;
   }

   public void setIndex(int index)
   {
       this.index = index;
   }

   public String getName()
   {
       return name;
   }

   public void setName(String name)
   {
       this.name = name;
   }
   
   
}

public class EnumTest
{
   public static void main(String[] args)
   {
       ActionTypeEnum[] actionTypeEnums = ActionTypeEnum.values();
       for(ActionTypeEnum actionTypeEnum : actionTypeEnums){
           System.out.println("name=" + actionTypeEnum.getName());
           System.out.println("index= " + actionTypeEnum.getIndex());
           System.out.println("oridary=" + actionTypeEnum.ordinal());
           System.out.println("this = " + actionTypeEnum);
           System.out.println("下載值:"  + actionTypeEnum.valueOf("下載"));
           System.out.println("name()方法= " + actionTypeEnum.name());
           System.out.println("--------------叫我分割線------------------");
       }
   }
}

運(yùn)行結(jié)果:

name=xiazai
index= 1
oridary=0
this = 下載
下載值:下載
name()方法= 下載
--------------叫我分割線------------------
name=fangwen
index= 2
oridary=1
this = 訪問
下載值:下載
name()方法= 訪問
--------------叫我分割線------------------

4、總結(jié)

可以把 enum 看成是一個(gè)普通的 class,它們都可以定義一些屬性和方法,不同之處是:enum 不能使用 extends 關(guān)鍵字繼承其他類,因?yàn)?enum 已經(jīng)繼承了 java.lang.Enum(java是單一繼承),但可以繼承接口。


文章名稱:講解一下java枚舉(enum)以及使用方法
本文地址:http://m.5511xx.com/article/cdipsog.html