在两个不同的插件中投射到相同的类型
Cast to the same type in two different plugins
我的应用由 2 个插件组成。
对于每个插件,我都声明了一个名为 TYPE 的 class,因为我需要 ArrayList 的自定义数据类型。 class 两个插件的类型相同。
场景如下:
Plugin1.TYPE - Plugin2.TYPE
Plugin1.ArrayList<TYPE> - Plugin2.ArrayList<TYPE>
现在我想在 Plugin2.ArrayList 中分配 Plugin1.ArrayList 的内容,但即使 class TYPE 相同,我仍然遇到转换问题。
基本上,即使两个 class 具有相同的内容,它们也会被视为不同的实体,因此会弹出转换异常。
plugin1.TYPE cannot be cast to plugin2.TYPE
有什么帮助吗?我该如何处理?
你能做一个继承其他两个的第三个插件吗?这是你最好的解决方案,因为类加载器地狱永远不会有趣。
或者,您能否创建第三个插件,其中包含其他两个插件可以使用的所有代码?
如果您无法使用这些解决方案中的任何一个,并且完全无法应对这种情况,那么最好的选择是使用 xstream。您需要做的是在一个插件中将对象写为 XML,将 XML 作为字符串传递给第二个插件,然后让该插件从那里将您的对象加载回内存。每个插件都必须使用自己的 XStream 版本,但这应该可以。
(请注意,您可以简单地序列化您的对象而不是使用 XStream,这取决于您的网络服务器,以及它是否分布在不同的 运行 Java 进程中)
干杯,
Emily
我的应用由 2 个插件组成。
对于每个插件,我都声明了一个名为 TYPE 的 class,因为我需要 ArrayList 的自定义数据类型。 class 两个插件的类型相同。
场景如下:
Plugin1.TYPE - Plugin2.TYPE
Plugin1.ArrayList<TYPE> - Plugin2.ArrayList<TYPE>
现在我想在 Plugin2.ArrayList 中分配 Plugin1.ArrayList 的内容,但即使 class TYPE 相同,我仍然遇到转换问题。
基本上,即使两个 class 具有相同的内容,它们也会被视为不同的实体,因此会弹出转换异常。
plugin1.TYPE cannot be cast to plugin2.TYPE
有什么帮助吗?我该如何处理?
你能做一个继承其他两个的第三个插件吗?这是你最好的解决方案,因为类加载器地狱永远不会有趣。
或者,您能否创建第三个插件,其中包含其他两个插件可以使用的所有代码?
如果您无法使用这些解决方案中的任何一个,并且完全无法应对这种情况,那么最好的选择是使用 xstream。您需要做的是在一个插件中将对象写为 XML,将 XML 作为字符串传递给第二个插件,然后让该插件从那里将您的对象加载回内存。每个插件都必须使用自己的 XStream 版本,但这应该可以。
(请注意,您可以简单地序列化您的对象而不是使用 XStream,这取决于您的网络服务器,以及它是否分布在不同的 运行 Java 进程中)
干杯,
Emily