将字符串转换为对象

问题描述:

是否有可能,是由Object.ToString(创建一个字符串转换)回到原来的对象,即:将字符串转换为对象

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

appent日志将记录每一个KeyEvent的一个字符串在新行。日志记录后,我想运行记录的keyevents

是否有可能将字符串记录的keyevents转换为KeyEvent对象?

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

如果您需要存储它,它的Parcelable,这可能会有所帮助。

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

+0

我添加了函数,即时记录文本文件中的keyevents,然后我想从文本文件中读取keyevents并“回复”它们 –

+0

@MikeG为什么?你想建立一个机器人吗?那些已经存在。 –

+0

我试图建立记录器,记录用户事件,如点击,移动,击键等...我不知道什么是机器人,如果我试图做的事情已经存在,你可以提供一些链接。谢谢! –

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

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

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

一般来说,没有。该字符串将不包含足够的信息来重建原始对象。当然,如果编码足够的信息在toString()返回的字符串中,你可以重建对象 - 例如,你可以序列化一个对象到一个XML - 一个字符串,然后从那个XML重建对象的起源它。看看JAXB

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

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

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

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

+0

是否也适用于Android? –