首页 > 解决方案 > 使用 Python 的 javaobj 解析序列化的 Java 子类

问题描述

我正在尝试使用 Python 的javaobj解析序列化的 Java 对象。这很好用,除了一个项目是直接继承自HashMap. Java 类的字面意思是:

package myutils;

import java.util.HashMap;
import java.util.Map;

public class MyMap extends HashMap implements MyInterface {
    public MyMap(Map map) {
        super(map);
    }
}

虽然实现了一个接口,但是接口定义是空的。

Github 文档建议使用转换器应该可以做到这一点。所需要的只是myutils.MyMap作为HashMap. 但是,当从自述文件MapObjectTransformer中的内容开始时:

class MyMapTransformer(javaobj.v2.api.ObjectTransformer):
    def create_instance(self, classdesc):
        if classdesc.name == "myutils.MyMap":
            return JavaMap()
        return None

# ...

transformers = [ MyMapTransformer() ]
obj = javaobj.load(fh, *transformers)

我收到一个错误:

AttributeError: `MyMapTransformer' object has no attribute 'create'

(也许这部分文档已经过时了)

如何成功解析作为内置 Java 类型的直接子类的序列化对象?

标签: javapythonserialization

解决方案


推荐阅读