class Person {
private String name;
private String age;
private Children children;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Children getChildren() {
return children;
}
public void setChildren(Children children) {
this.children = children;
}
}
class Children {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
接下来我们来写一个测试函数
public Class test{
public static void main(String[] args){
Children c = new Children();
c.setName("Lincoln");
c.setAge("18");
Person p = new Person();
p.setName("kenny");
p.setage("28");
p.setChildren(c);
Class<? extends Person> persons = p.getClass();
// 把类的所有属性放进一个List里面。Field类是java里面的反射机制的一个类,你可以去查查API
List<Field> fields = new ArrayList<Field>();
Collections.addAll(fields,personClass.getDeclaredFields());
for(Field field : fields){
//设置访问权限
field.setAccessible(true);
//获得当前Object的属性
Object personField = field.get(p);
//判断属性的类型,如果是POJO则通过反射机制提取其属性显示
if( personField instanceof Children){
Children ch = (Children)personField;
Class<? extends Children> childrenClass = ch.getClass();
List<Field> chfields = new ArrayList<Field>();
Collections.addAll(chfields, childrenClass.getDeclaredFields());
for(Field f : chfields){
f.setAccessible(true);
Object chField = f.get(children);
System.out.println(chField.toString());
}
}
}else{
System.out.println(personField.toString());
}
}
}
运行结果为
kenny
28
lincoln
18
private String name;
private String age;
private Children children;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Children getChildren() {
return children;
}
public void setChildren(Children children) {
this.children = children;
}
}
class Children {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
接下来我们来写一个测试函数
public Class test{
public static void main(String[] args){
Children c = new Children();
c.setName("Lincoln");
c.setAge("18");
Person p = new Person();
p.setName("kenny");
p.setage("28");
p.setChildren(c);
Class<? extends Person> persons = p.getClass();
// 把类的所有属性放进一个List里面。Field类是java里面的反射机制的一个类,你可以去查查API
List<Field> fields = new ArrayList<Field>();
Collections.addAll(fields,personClass.getDeclaredFields());
for(Field field : fields){
//设置访问权限
field.setAccessible(true);
//获得当前Object的属性
Object personField = field.get(p);
//判断属性的类型,如果是POJO则通过反射机制提取其属性显示
if( personField instanceof Children){
Children ch = (Children)personField;
Class<? extends Children> childrenClass = ch.getClass();
List<Field> chfields = new ArrayList<Field>();
Collections.addAll(chfields, childrenClass.getDeclaredFields());
for(Field f : chfields){
f.setAccessible(true);
Object chField = f.get(children);
System.out.println(chField.toString());
}
}
}else{
System.out.println(personField.toString());
}
}
}
运行结果为
kenny
28
lincoln
18