在Java中将函数序列化为数据?

时间:2012-02-11 06:27:47

标签: java multithreading serialization

我在Java中有一个大致类似于线程的抽象类,另一个用于调度我的"线程"到实际的java线程。我想要做的是创建继承自我的"线程" class,覆盖run()函数,然后使它们可序列化并通过网络发送它们可以在其他地方运行。

显而易见的问题是接收者不知道发送的实际课程,甚至将该课程投入其超级课程也不会有帮助。

我想知道的是,有没有办法序列化通过网络发送的匿名字节码?如果是这样,怎么样?非常感谢的例子。

1 个答案:

答案 0 :(得分:2)

java序列化序列化对象,即类的实例。序列化对象时,实际上存储了成员字段的值。方法的逻辑超出了序列化 - 它存储在类文件中。 您实际想要做的是通过网络发送类文件和类的实例。

好消息是你可以做到这一点。使用ClassLoader.getResoureAsStream()查找适当的class文件,将其作为字节序列发送到另一侧。另一方显然应该能够接收它然后再打电话

ClassLoader.defineClass(String name, byte[] b, int off, int len)

从那时起,您的发送方应用程序已知的类将在接收方的JVM上可用。现在,您可以使用常规序列化机制发送此类的实例,一切都应该有效。