我正在尝试通过蓝牙在Android上创建分布式处理系统,因此我创建了一个实现Serializable的类,制作了一个序列化和反序列化该对象的方法,以便我可以将其作为ByteArray发送。问题是我需要每个对象都有不同的代码才能在其他设备上运行。我想过覆盖一个方法,然后在另一个设备上运行该方法,但是当我这样做时,我得到一个NotSerializableException。有没有办法解决这个问题?或者如果没有,是否有另一种方法可以发送不同的代码片段在其他设备上执行?
答案 0 :(得分:0)
默认的序列化机制旨在提供一种方法来传输对象的STATE,而不是传递对象的类的实际LOGIC。因此,方法中包含的代码不是(至少在默认情况下)Serializable。
解
您可以采用多种方法和/或策略来实现或至少接近您所需的结果;底线是服务器需要您要执行的类文件的副本:
动态方法:
您可以将“class”或完整jar作为标准文件动态地发送到服务器,然后使用序列化发送您希望从客户端调用的方法的DETAILS(即名称,签名等)。
静态方法:
将应用程序jar的副本放在服务器的类路径上,作为构建过程的一部分。
当然,您也可以实现Externalizable Interface来定义自己的序列化机制和语义。如果您需要有关此概述或我概述的任何其他方法的任何进一步信息,请与我们联系。