【发布时间】:2019-12-28 01:07:20
【问题描述】:
我有一个程序已经通过 JAXB 将 POJO 转换为 xml,这是通过将元素添加到此表单中的列表来完成的
List<JAXBElement<?>> elementsToTransform = new ArrayList<JAXBElement<?>>();
在其他方法中我只是将elementsToTransform转换并填充为xml,这种方法的公司是这样的
private List<JAXBElement<?>> transform(Student student)
现在我需要添加一种通过 Gson 转换为 Json 的方法,并且我想抽象声明和方法以支持这两种格式,但是实现非常硬编码为 xml,我需要按照它的方式来适应这个解决方案是用 xml 构建的,因为这取决于我不想修改的其他功能,所以我会知道是否有一种方法可以支持这两种格式,这将是解决这个问题的更好选择
最后我想在 elementsToTransform 列表中有这样的东西
JAXBElement(0)
JAXBElement(1)
JAXBElement(2)
String(3)(this will be Json)
【问题讨论】:
-
所以 elementsToTransform 可以同时包含 JAXBElement> 和 String 吗?或者对于 XML,它应该像 List
> 而对于 Json List? -
我希望 elemenToTransform 可以同时包含 jaxbelements 和 json 字符串,但该方法当前返回 jaxbelements 列表,因为它是转换消息的主要机制(学生,成绩这就是原因我有 JAXBElements >) ,那部分是抽象的,每个转换器的实现是相互分离的,最后会发生 elementsToTransform 的迭代,每个元素都将被发布到队列中,我需要相同的列表包含两种格式
-
那部分是抽象的,你的意思是学生和年级有通用接口或超类?或者您是否有单独的方法,例如 private List
> transform(Student student) , private List> transform(Grade Grade) 跨度> -
我的意思是 Student 和 Grade 不相关,但两者都使用此功能来转换为 xml,但两者的实现都是分开的
-
您可以使用 List> elementsToTransform 并且在迭代时您可以检查 instanceof JAXBElement> 或 String ,然后将其转换为 JAXBElement> 或 String
标签: java design-patterns