我在代码上定义了一个枚举:
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
答案 0 :(得分: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()
答案 1 :(得分: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和Logcat
打印
07-12 00:05:42.892 2975-2975 / com.example.newuser.testenum E / TAG:str1 === 1