将字符串转换为对象

时间:2011-11-29 18:28:49

标签: java android

是否可以将Object.ToString()创建的字符串转换回原始对象,即:

            public boolean dispatchKeyEvent (KeyEvent event) {     
                appendLog(event.toString());
                return super.dispatchKeyEvent(event);      
            }

appent log会将每个keyevent记录为新行中的字符串。记录后,我想运行已记录的keyevents

是否可以将字符串记录的键事件转换为KeyEvent对象?

6 个答案:

答案 0 :(得分:3)

仅当toString()包含所有必要的事件信息时。如果它只是一个哈希码,当然不是。如果相关信息可用,则需要解析它,并使用其中一个KeyEvent构造函数,并希望内部没有任何内容未反映在toString中。对我来说似乎很粗略。

如果你需要存储它,那就是Parcelable,这可能会有帮助。

在您显示的代码段中仍然有活动,没有实际的用例,很难知道您要做什么。

答案 1 :(得分:3)

一般来说,没有。 String将不包含足以重建原始对象的信息。当然,如果在toString()返回的String中编码足够的信息,您可以重新构建对象 - 例如,您可以将对象序列化为XML - String,并从该XML序列化重建发起它的对象。看看JAXB

答案 2 :(得分:2)

是的,它可能但可能不是你想的那样。为了做到这一点,所有与KeyEvent相关的数据都必须转换为文本形式,然后进行解析并创建一个新的KeyEvent。另一个问题是KeyEvent缺少setter来重新创建内部状态,所以要完成返回转换,你必须创建一个子类或找到一种方法来使用Parcelable转换解析后的字符串。

答案 3 :(得分:2)

如果您想要重播键盘和鼠标事件,那么您应该看看:

http://docs.oracle.com/javase/6/docs/api/java/awt/Robot.html

您需要倾听所有事件并记录所有需要的信息,但您需要的一切都应该在事件中。

答案 4 :(得分:1)

event.toString()返回事件对象的字符串表示形式(实际上将返回与引用相关的字符串)。

您不能使用强制转换来重新创建KeyEvent对象。

答案 5 :(得分:0)

我怀疑toString()包含对象的所有信息。您需要序列化机制来恢复对象。在Android中,我会使用JSONObject。