Python中读取Java中通过ObjectOutputStream写入的文件对象,Java序列化时使用了serialVersionUID
时间: 2024-05-06 21:16:56 浏览: 239
java 中Spark中将对象序列化存储到hdfs
在Python中读取Java中通过ObjectOutputStream写入的文件对象,可以使用Python的`pickle`模块来反序列化Java对象。但需要注意的是,Java中序列化时使用了serialVersionUID,而Python中默认情况下不会生成serialVersionUID。
为了在Python中读取Java对象,需要手动设置Python中的serialVersionUID与Java中的serialVersionUID一致,这样才能进行反序列化。
以下是一个示例代码,演示如何在Python中读取Java对象:
```python
import pickle
class JavaObject(object):
def __init__(self, data):
self.data = data
# 设置与Java中的serialVersionUID一致
JavaObject.__dict__['serialVersionUID'] = -1234567890
with open('java_object_file.obj', 'rb') as f:
java_obj = pickle.load(f)
print(java_obj.data)
```
需要注意的是,Python中的类名和Java中的类名必须一致,否则会出现反序列化失败的情况。另外,Java中序列化的对象必须是可序列化的,即必须实现Serializable接口。
阅读全文