2016-07-12 63 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() 
相关问题