有一个枚举,public enum PayStatusEnum {
NOPAY("00"),
PAYED("01"),
/**
 * 货到付款
 */
WAITPAY("02"),
/**等待发货
 * 
 */
WAITSEND("03");


private final String value;
public String getValue()
{
return value;
}
private PayStatusEnum(String st)
{
value = st;
}
}
通过 PayStatusEnum enum1=Enum.valueOf(PayStatusEnum.class,"00"); 想把串转成枚举,老是报错,
 java.lang.IllegalArgumentException: No enum const class com.et.portal.services.orders.iservices.PayStatusEnum.00
at java.lang.Enum.valueOf(Enum.java:196)
at test.EnumTest.main(EnumTest.java:9)
请教怎么处理?java

解决方案 »

  1.   

    PayStatusEnum enum1=PayStatusEnum.valueOf("00"); 也报同样的错。
      

  2.   

    这必须报错啊。Enum.valueOf (Class<T extends Enum> eunmType,String name);
    这个是根据你的enum的Class和enum中定义的枚举名称来获得此枚举的实例,不是通过你的值来获得实例的
    这个name是枚举定义的名称
      

  3.   

    你要用值获得实例可以在你的PayStatusEnum 类中加入public static PayStatusEnum getEnum(String value){//根据值获得实例
         PayStatusEnum e=null;
         for(PayStatusEnum e1:PayStatusEnum.values())
         if(e1.value.equals(value)){
         e=e1;
         break;
         }
         return e;
    }后面你只要调用
    PaystatusEnum e=PayStatusEnum.getEunm("00");//这个e就是你的实例了
    System.out.print(e);