values()和valueOf()方法

所有的枚举都自动的拥有两个预定义方法:value()和valueOf().他们的基本形式如下所示:
public static enum-type[] values()
public static enum-type valueOf(String str)
values()方法返回一个包含枚举常量列表的数组.valueOf()方法返回一个枚举常量,其值对应于传递给str的字符串.在这两个方法中,enum-type都是枚举类型.例如,在前面的Transport枚举中,Transport.valueOf(“TRAIN”)的返回类型是Transport,返回值是TRAIN.下面的程序演示了values()和valueOf()方法:
public class test2
{
    // @param args
    public static void main(String args[])
    {
     Transport tp;
     System.out.println("Here are all Transport  constants");
     
     //获得Transport常量数组
     Transport allTransports[] =  Transport.values();
     for(Transport t : allTransports)
     {
         System.out.println(t);
     }
     
     System.out.println("---");
     //获得名为AIRPLAIN的常量
     tp = Transport.valueOf("AIRPLANE");
     System.out.println(tp);
    }
}
enum Transport
{
    CAR,TRUCK,AIRPLANE,TRAIN,BOAT
}
程序输出如下所示:
Here are all Transport constants
CAR
TRUCK
AIRPLANE
TRAIN
BOAT
---
AIRPLANE
注意该程序使用了for-each形式的for循环来迭代通过调用values()获得的常量数组.出于演示目的,创建了变量allTransports,并且将其赋值为枚举数组的引用.但是,这样做不是必须的,因为可以下面这样来编写for循环,而不必使用allTransports变量:
for(Transort t : Transport.values())
    ...
现在,注意如何通过调用valueOf()方法来获得对应名称AIEPLANE的值:
tp = Transport.valueOf("AIRPLANE");
如上所述,valueOf()返回与作为字符串的常量名称相关联的枚举值.