让我们想象一下Phone
和Person
接口:
public interface Phone {
String getNumber();
// ...
}
public interface Person {
String getName();
List<Phone> getPhones();
// ...
}
我不想更改这些类,它们只存储数据,但我希望将它们一起显示,以避免在数百万个寄存器上迭代两次,一次在控制器上,另一次在数据表上查看,并避免做逻辑在视图上(不是操纵数据),我设法详细说明了这个解决方案:
abstract class PhonedPerson implements Person {
private String phoneNumbers;
public String getPhoneNumbers() {
if (phoneNumbers == null) {
phoneNumbers = StringUtils.join(
CollectionUtils.collect(getPhones(), new Transformer() {
@Override
public Object transform(Object input) {
return ((Phone) input).getNumber();
}
}),
", "
);
}
return phoneNumbers;
}
}
如何在不重复所有项目的情况下将List<Person>
转换为List<PhonedPerson>
?