2016-07-12 106 views
0

我定義在我的代碼枚舉:現在爲什麼我不能從枚舉中得到字符串?

public enum TimeType 
{ 
    One("1"), 
    Two("2"), 
    Three("3"); 

    private String _friendlyName; 

    TimeType(String friendlyName) { 
     this._friendlyName = friendlyName; 
    } 


    @Override 
    public String toString() { 
     return _friendlyName; 
    } 
} 

,在某些地方,我試圖枚舉轉換爲字符串:

TimeType t1 = TimeType.One; 

我嘗試做更多的,其中一個方法使用..但我得到一個例外

String str1 = t1.toString();       // fail 
String str2 = TimeType.values()[t2].toString();  // fail 
String str3 = t1.name();        // fail 
+2

什麼異常? –

+1

'失敗'不是問題描述。 – EJP

回答

1

問題是你忘了添加;在聲明枚舉

public enum TimeType{ 
    One("1"), 
    Two("2"), 
    Three("3"); // add ; 

    private String _friendlyName; 

    TimeType(String friendlyName) { 
     this._friendlyName = friendlyName; 
    } 

    @Override 
    public String toString() { 
     return _friendlyName; 
    } 
} 

這裏是Java測試goo.gl/evcKMq
這裏是Android的

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toast.makeText(this,TimeType.Two.toString(),Toast.LENGTH_SHORT).show(); 

     TimeType t1 = TimeType.One; 
     String str1 = t1.toString(); 

     Log.e("TAG","str1 === "+str1); 
    } 

    public enum TimeType 
    { 
     One("1"), 
     Two("2"), 
     Three("3"); // add ; 

     private String _friendlyName; 
     TimeType(String friendlyName) { 
      this._friendlyName = friendlyName; 
     } 
     @Override 
     public String toString() { 
      return _friendlyName; 
     } 
    } 
} 
測試

Toast顯示屏2個d的Logcat打印

07-12 00:05:42.892 2975年至2975年/ com.example.newuser.testenum E/TAG:STR1 === 1

+0

不,抱歉...這是我的代碼,並沒有解決問題。 – Yanshof

+0

@Yanshof請更新您的代碼,我已經測試它和它的工作 –

+0

更新 - 我測試了他們的5倍。不工作。 – Yanshof

1

我的例子:

public static enum VideoBitrate { 
     HD1080("HD 1080", 0), 
     HD720("HD 720", 1), 
     MV480("MV 480", 2); 

     private String stringValue; 
     private int intValue; 

     VideoBitrate(String toString, int value) { 
      stringValue = toString; 
      intValue = value; 
     } 

     public static VideoBitrate valueOf(int value) { 
      switch (value) { 
       case 0: 
        return HD1080; 
       case 1: 
        return HD720; 
       case 2: 
        return MV480; 
       default: 
        return null; 
      } 
     } 

     public int value() { 
      return intValue; 
     } 

     @Override 
     public String toString() { 
      return stringValue; 
     } 
    } 

使用

Enums.VideoBitrate.MV480.toString() 
相關問題