枚舉類的values()方法

枚舉類中的元素是無法通過下標值來訪問的,如果你想指定訪問枚舉類中的某個值,你只能直接寫出它們的值,除此之外,別無他法。但是枚舉類有一個values()方法,這個方法可以將枚舉類轉換成一個枚舉類型的數組,轉換成數組之後我們就可以通過下標來訪問我們的枚舉類中的值。比如下面的代碼:


enum Direction {

    LEFT, RIGHT, UP, DOWN

}


    這裏面有四個值,如果我們想通過下標來訪問的話,就必須進行如下的操作:


Direction dirs[] = Direction.values();

for (int i = 0; i < dirs.length; i++) {

     System.out.println(dirs[i]);

}

 

這個操作有什麼用呢?主要用途就是從這個枚舉類中選取一個隨機值,具體的代碼如下:


Random r = new Random();

int ri = r.netInt(dirs.length);

Direction dir = dirs[ri];

 

上面這段代碼的用處很廣,比如在遊戲中,指定一個隨機方向;在抽獎中,選擇一個隨機的獎品等等“需要隨機對象的地方”。那麼爲什麼要單獨說這個方法呢?因爲在API文檔中,Enum類的這個方法你是查不到,無論是它的父類中,還是他實現的接口中。
    關於Enum類中values方法的由來,有人做了比較深入的論證,具體見下面文章:
Java中Enum類下的values()方法的由來
http://blog.sina.com.cn/s/blog_6fd0fd4b01014x8l.html
 

發佈了26 篇原創文章 · 獲贊 74 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章