为什么我没有enum的字符串?

时间:2016-07-12 03:28:52

标签: android

我在代码上定义了一个枚举:

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 个答案:

答案 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