所有的枚举都自动的拥有两个预定义方法: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()返回与作为字符串的常量名称相关联的枚举值.