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