BeanUtils和PropertyUtils都是Apache Commons BeanUtils库中的类,用于操作Java对象的属性。它们可以用于读取嵌套的集合属性。
以下是一个示例代码,演示如何使用BeanUtils和PropertyUtils读取嵌套的集合属性:
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
import java.util.List;
public class NestedCollectionExample {
public static void main(String[] args) {
Person person = new Person();
person.setName("John");
Address address1 = new Address();
address1.setCity("New York");
address1.setCountry("USA");
Address address2 = new Address();
address2.setCity("London");
address2.setCountry("UK");
person.getAddresses().add(address1);
person.getAddresses().add(address2);
try {
// 使用BeanUtils读取嵌套的集合属性
List addresses = (List) BeanUtils.getProperty(person, "addresses");
for (Address address : addresses) {
System.out.println("City: " + address.getCity());
System.out.println("Country: " + address.getCountry());
}
System.out.println();
// 使用PropertyUtils读取嵌套的集合属性
addresses = (List) PropertyUtils.getProperty(person, "addresses");
for (Address address : addresses) {
System.out.println("City: " + address.getCity());
System.out.println("Country: " + address.getCountry());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static class Person {
private String name;
private List addresses;
public Person() {
addresses = new ArrayList<>();
}
// 省略getter和setter方法
}
public static class Address {
private String city;
private String country;
// 省略getter和setter方法
}
}
在上面的示例中,我们创建了一个包含嵌套集合属性的Person对象。我们使用BeanUtils和PropertyUtils依次读取嵌套的集合属性"addresses",并打印每个地址的城市和国家。
请注意,使用BeanUtils或PropertyUtils读取嵌套集合属性时,需要确保嵌套属性的getter方法返回一个集合对象。