Android 在实现Serializable的类中重写方法

Android 在实现Serializable的类中重写方法,android,bluetooth,bytearray,serializable,notserializableexception,Android,Bluetooth,Bytearray,Serializable,Notserializableexception,我试图通过蓝牙在Android上创建一个分布式处理系统,所以我创建了一个实现Serializable的类,创建了一个方法来序列化和反序列化该对象,以便可以将其作为ByteArray发送。问题是我需要每个对象都有一个不同的代码在其他设备上运行。我想重写一个方法,然后在另一个设备上运行该方法,但是当我这样做时,我得到一个NotSerializableException。有没有办法解决这个问题?或者,如果没有,是否有其他方法发送不同的代码片段以在其他设备上执行?默认序列化机制旨在提供一种方法来传输对象

我试图通过蓝牙在Android上创建一个分布式处理系统,所以我创建了一个实现Serializable的类,创建了一个方法来序列化和反序列化该对象,以便可以将其作为ByteArray发送。问题是我需要每个对象都有一个不同的代码在其他设备上运行。我想重写一个方法,然后在另一个设备上运行该方法,但是当我这样做时,我得到一个NotSerializableException。有没有办法解决这个问题?或者,如果没有,是否有其他方法发送不同的代码片段以在其他设备上执行?

默认序列化机制旨在提供一种方法来传输对象的状态,而不是从中派生对象的类的实际逻辑。因此,方法中包含的代码(至少在默认情况下)是不可序列化的

解决方案

您可以采用多种方法和/或策略来实现或至少接近您所需的结果;底线是服务器将需要您希望执行的类文件的副本:

动态方法:

您可以将“类”或完整的jar作为标准文件动态地发送到服务器,然后使用序列化来发送希望从客户端调用的方法的详细信息(即名称、签名等)

静态方法:

作为构建过程的一部分,在服务器的类路径上放置应用程序jar的副本


当然,您也可以实现来定义自己的序列化机制和语义。如果您需要有关此方法或我概述的任何其他方法的任何进一步信息,请告诉我。

我说得对吗,您将编写一个应用程序,从其他设备接收代码片段,而代码应该是任意的?如果是这样的话,请先研究一个安全概念……没错,我会的,但现在你能帮我解决这个具体问题吗?我不太确定Android框架会支持这个。但从技术上讲,你可能想看看这个:还有,你的安全概念是什么意思?如果你启动并运行了它,就会有人对你的应用程序进行反向工程,并使用它向其他设备注入任意代码,然后在你的应用程序的上下文中运行。