【已解决】android中enum转换为int

【背景】

折腾:

【记录】Android中创建进程或线程去实现USB设备插入的状态检测

期间,需要去把一个enum:

	public enum usb_action{
		USB_ACTION_UNKNOWN,
		USB_ACTION_ATTACH,
		USB_ACTION_DETACH,
	};

转换为int:

	Message message=new Message();
	message.what=usb_action.USB_ACTION_ATTACH ?????;

【折腾过程】

1.自己去试了试,

int.

Int32.

Convertor.

等等,都没有对应的转换方法。

2.参考:

How to convert enum value to int?

写成:

Message message=new Message();
 message.what=usb_action.USB_ACTION_ATTACH.ordinal();

即可。

3.不过后来看到上述办法,不推荐。

所以再去改为:

	public enum usb_action{
		USB_ACTION_UNKNOWN(0), USB_ACTION_ATTACH(1), USB_ACTION_DETACH(2);
		
	    private final int action;
	    private void Action(int action) {
	        this.action = action;
	    }

	    public int getAction() {
	        return action;
	    }
	}

	public int getCurrentAction() {
		usb_action curUsbAction = usb_action.USB_ACTION_ATTACH;
	    return curUsbAction.getAction();
	}

但是却竟然出错:

The constructor DeviceListActivity.usb_action(int) is undefined

如图:

The constructor DeviceListActivity.usb_action(int) is undefined

 

很是奇怪。。。

4.参考:

Set Value to Enum – Java

去试试:

	public enum usb_action{
		USB_ACTION_UNKNOWN(0), USB_ACTION_ATTACH(1), USB_ACTION_DETACH(2);
	    
		usb_action (int action)
	    {
	        this.action = action;
	    }
	    
	    private final int action;

	    public int getAction() {
	        return action;
	    }
	}

	public int getCurrentAction() {
		usb_action curUsbAction = usb_action.USB_ACTION_ATTACH;
	    return curUsbAction.getAction();
	}

即可。

 

【总结】

其实是java中,将enum转为init,办法是:

1.不太推荐的:

直接用enum的值,调用其ordinal方法:

usb_action.USB_ACTION_ATTACH.ordinal();

即可。

2.推荐的:

如下写法:

	public enum usb_action{
		USB_ACTION_UNKNOWN(0), USB_ACTION_ATTACH(1), USB_ACTION_DETACH(2);
	    
		usb_action (int action)
	    {
	        this.action = action;
	    }
	    
	    private final int action;

	    public int getAction() {
	        return action;
	    }
	}

	public int getCurrentAction() {
		usb_action curUsbAction = usb_action.USB_ACTION_ATTACH;
	    return curUsbAction.getAction();
	}

然后调用:

Message message=new Message();
message.what=usb_action.USB_ACTION_ATTACH.getAction();

即可。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量