我上课
public class A {
Person[] getPersons() { .. }
}
public class B {
List<Person> getPersons() { .. }
}
我有Mapper可以将A转换为B,
@Mapper
public interface AMapper {
AMapperINSTANCE = Mappers.getMapper(AMapper.class);
B AtoB(A entity);
}
在映射时,如何将人员数组转换为人员列表?
答案 0 :(得分:0)
使用java.util.Arrays包中的静态方法(1, ', ', 0, ', ', 3)
。
示例:
Array.asList(T...a)
输出:
class Person {
private String name;
Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
@Test
public void arrayToList() {
Person[] persons = {new Person("Yasuo"),new Person("Jinx")};
List<Person> personList = Arrays.asList(persons);
System.out.println(personList);
}
答案 1 :(得分:0)
MapStruct自动创建用于在数组和List
之间进行映射的中间方法。
您定义的内容:
public interface AMapper {
AMapperINSTANCE = Mappers.getMapper(AMapper.class);
B AtoB(A entity);
}
应生成:
public class AMapperImpl implements AMapper {
@Override
public B AtoB(A entity) {
if ( entity == null ) {
return null;
}
B b = new B();
b.setPersons( personArrayToPersonList( entity.getPersons() ) );
return b;
}
protected List<Person> personArrayToPersonList(Person[] personArray) {
if ( personArray == null ) {
return null;
}
List<Person> list = new ArrayList<Person>( personArray.length );
for ( Person person : personArray ) {
list.add( person );
}
return list;
}
}
说了这么多。您应该确保班级人员的吸气剂/吸气剂是公开的。 MapStruct是一个注释处理工具,可以生成Java代码并且不进行反射