java - 使用 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 类型的直接子类的序列化对象?
解决方案
推荐阅读
- c - 检测到闪存驱动器后返回的过程(无错误和警告)
- docker - 更新后无法恢复以前的数据
- javascript - 在对象定义中使用 undefined 作为值是一种好习惯吗?
- javascript - 如何根据正在编辑的文件中的哪个部分(在 VIM 中)设置不同的选项卡宽度?
- angular - 使用 ICONIC 4 进行身份验证,不会显示失败消息
- firefox - 阻止 Firefox 的弹出窗口窃取焦点
- ruby-on-rails - 如何定义一个rescue_from 后备处理程序?
- azure-pipelines - 在调试模式下发布 Azure Pipelines IIS 应用程序 - 防止 web.config 转换
- javascript - 表单提交操作与 AJAX 请求有什么不同?
- c# - 在 Azure DevOps 中运行 Azure Function v1 单元测试