gpt4 book ai didi

java - 如何反序列化Java中隐藏的ServiceProvider类对象?

转载 作者:行者123 更新时间:2023-11-30 04:48:40 24 4
gpt4 key购买 nike

我们创建一个程序来构建逻辑电路,并使用 NetBeans 平台的查找ServiceProvider机制将所有可用的逻辑元素获取到 UI 面板上。

模型(MVC)有一个BasicElement类,它是所有元素的ServiceProvider。这个类是公共(public)的,它的包是公开导出的,并且 View 模块依赖于它。 View 模块只知道这个模型模块。当有人添加带有@ServiceProvider 注释元素包的新模块时,View 会将使用 Lookup 元素找到的新内容加载到调色板上。然后用户可以将调色板中的元素添加到场景中,创建一些电路并保存(序列化)它们。

问题是当程序尝试打开保存的文件(反序列化元素)时会出现异常。因为没有模块知道(依赖于)具有元素的模块(并且这些模块中的包不能公开导出)。元素仅带有注释,足以让它们到达用户手中。

是否有可能无需每次添加对新模块的依赖,其中的元素反序列化这些元素。或者一般来说有没有一种方法可以反序列化隐藏在 ServiceProvider 类后面的类对象。

最佳答案

我不久前就遇到过这个问题。经过大量研究,我发现您可以更改 ObjectInputStream 使用的类加载器。请查看我关于该主题的博客文章,详细介绍了我的解决方案。 http://www.pellissier.co.za/hermien/?p=179

关于java - 如何反序列化Java中隐藏的ServiceProvider类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com