2014-06-09 25 views
-1

說我有這個枚舉類型:如何處理字符串 - >枚舉轉換的非法參數異常?

public enum Type { VALUEA, VALUEB }; 

並希望從字符串轉換到該枚舉,使用的valueOf()。 如何處理這種情況,使其返回默認值?

Type.valueOf("NOTVALID"); 
+0

'想從字符串切換到這個枚舉,請澄清更多的你想要什麼? –

+0

當傳遞的String對象沒有相應的枚舉類型時,我希望valueOf()返回一個默認值 – Phate

回答

1
public Type getMyEnum(String value){ 
    Type expectedType; 
    try { 
     expectedType = Type.valueOf(value); 
    } catch(IllegalArgumentException ex){ 
     expectedType = Type.YOUR_DEFUALT_ONE; 
    } 
    return expectedType; 
} 
+0

但是,您絕對不應該使用捕捉控件來控制程序流!這是一個例外,它應該像那樣使用! – Blindworks

+0

看看這個:https://www.stubbornjava.com/posts/java-enum-lookup-by-name-or-field-without-throwing-exceptions – Blindworks

0

作爲枚舉值是爲你必須使用的名稱()方法的字符串檢索。

enum Type { 
    VALUEA, 
    VALUEB; 

    public static Type valueOfOrDefault(String value) { 

     for(Type type : getClass().getEnumConstants()) { 
     if(type.name().equalsIgnoreCase(value)) { 
      return type; 
     } 
     } 
     return Type.VALUEA; 
    } 

    }