我正在尝试反序列化一个对象,其中:
public static void getData() { ConnectionRequest req = new ConnectionRequest() { @Override protected void readResponse(InputStream is) throws IOException { DataInputStream dis = new DataInputStream(is); Employee recovered = new Employee(); recovered.internalize(1, dis); } }; req.setUrl(BASEURL); req.setPost(false); NetworkManager.getInstance().addToQueueAndWait(req); }
从远程jvm我在ByteArray或ByteArrayInputStream中传递对象,在CN1中我得到EOFException。
是否可以这样转移物体?或者我应该使用JSON 如果我双方都有Java,我以为我不需要JSON。
答案 0 :(得分:1)
Codename One的外化接口与Java SE不兼容。序列化和外部化依赖于反射和动态调用,这在所有Codename One的目标上都是不实用的(即使是通常对二进制文件进行模糊处理的Android)。
您可以传递一个对象,但是您需要使用Codename One API来执行此操作。您可以从Codename项目中有效地获取JavaSE.jar文件,并使用其中的API来编写/读取对象。
除此之外,您读取对象的代码不正确。您应该使用Util.readObject / writeObject。我建议阅读great tutorial Steve Hannah wrote on the subject。