我正在使用以字符串属性列表作为其属性的对象:
public class MyObjectOne {
private List<String> listOne;
private List<String> listTwo;
private MyObjectTwo myObjectTwo;
}
public class MyObjectTwo {
private List<String> listOne;
private List<String> listTwo;
}
我想合并多个MyObjectOne对象, 以这种方式,我得到一个合并了所有列表的新对象,包括嵌套对象MyObjectTwo中的列表。
我意识到可能有更好的方法来构造程序,因此我不必这样做,但是我对这段代码感到困惑。
有什么方法可以实现而不必为对象明确编写映射器?实际上,每个对象都具有上述List属性的10+个,并且有多个嵌套对象,因此将其全部写出将是一个巨大的痛苦。
答案 0 :(得分:1)
我将使用接口,该接口可以返回所有要合并的列表和所有嵌套对象。 像这样:
interface Mergable {
List<List<String>> getAllLists();
List<Mergable> getAllNestedObjects();
}
class MyObjectOne implements Mergable {
private List<String> listOne;
private List<String> listTwo;
private MyObjectTwo myObjectTwo;
@Override
public List<List<String>> getAllLists() {
return Stream.of(listOne, listTwo).collect(toList());
}
@Override
public List<Mergable> getAllNestedObjects() {
return Stream.of(myObjectTwo).collect(toList());
}
}
class MyObjectTwo implements Mergable {
private List<String> listOne;
private List<String> listTwo;
@Override
public List<List<String>> getAllLists() {
return Stream.of(listOne, listTwo).collect(toList());
}
@Override
public List<Mergable> getAllNestedObjects() {
return Collections.emptyList();
}
}
然后通过递归将它们全部合并到List或要存储它的任何位置。
答案 1 :(得分:0)
向MyObjectOne
添加以下方法,并为listOne
和listTwo
的{{1}}类获取方法。顺便说一句,您应该首先自己尝试一下。
MyObjectTwo