【发布时间】:2012-10-10 23:43:27
【问题描述】:
我需要使用 RMI 将 java.lang.reflect.Field 从一个进程传递到另一个进程,但 Field 没有实现 Serializable 接口。我该如何克服这个问题?
【问题讨论】:
标签: java serialization rmi
我需要使用 RMI 将 java.lang.reflect.Field 从一个进程传递到另一个进程,但 Field 没有实现 Serializable 接口。我该如何克服这个问题?
【问题讨论】:
标签: java serialization rmi
通过 RMI 传递字段没有意义。 Field 实例实际上是 java.lang.Class 实例的依赖对象,Class 对象也不是可传输的。 (Class 不可传输的原因是它会带来各种讨厌的类型检查问题……考虑到Class 实例实际上表示引用类型。)
您需要将相关的Field 字段声明为transient。如果要传输Field 信息,您可能需要以字段名/类名的形式传递它,然后在自定义readObject 方法中重构另一端的Field。
【讨论】: