Dozer,Java:如何从List <list>转换为2D Array?

时间:2017-10-25 09:52:39

标签: java arrays list converter dozer

我有一个列表列表,我试图使用Dozer和Custom Converter映射到二维数组[] []。

receivedData = receivedData.replaceAll("(\\n)", "");

转换器只应用于public class Field { List<String> items; public void add(String s) { items.add(s); } } public class ClassA { int anotherVariable; List<Field> fields; public void add(Field f) { fields.add(f); } } public class ClassB { int anotherVariable; String[][] itemValues; } @Test public void convertListTo2DArray() { Field field1 = new Field(); field1.add("m"); field1.add("n"); Field field2 = new Field(); field2.add("o"); field2.add("p"); ClassA classA = new ClassA(); classA.add(field1); classA.add(field2); classA.setAnotherVariable(99); List<Converter> converters = new ArrayList<Converter>(); converters.add(new ListToArrayConverter()); ClassB classB = new DozerBeanMapper().setCustomConverters(converters).map(classA, ClassB.class); /** * Result: * classB -> anotherVariable = 99 * * classB -> itemValues[][] = * ["m", "n"] * ["o", "p"] */ } List<List>之间的转换,而不能用于其他变量。

我看了下面问题的答案,但是如何处理Array而不是Custom Converter中的Set / List? Dozer Mapping from HashSet to Arraylist

我们非常感谢任何建议。 感谢

1 个答案:

答案 0 :(得分:1)

我的java有点生疏,请耐心等待。

如果您希望转换器仅用于将List转换为String数组而不是其他任何内容,则可以限制它的一种方法是为xml中的那两个字段指定自定义转换器:

<mapping>
<class-a>beans6.ClassA</class-a>
<class-b>beans6.ClassB</class-b>
<field custom-converter="converter.ConvertListToArray">
    <a>fields</a>
    <b>itemValues</b>
</field>
</mapping>

接下来,items类中的Field属性和fields类中的ClassA属性需要初始化为arraylists以防止它们抛出{{1} }}

NullPointerException

最后,这是CustomConverter,假设添加到List<String> items = new ArrayList<String>(); List<Field> fields = new ArrayList<Field>(); 的元素数总是不变的:

fields