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