检查并打印嵌套的Javabean属性



我有嵌套的Javabeans,例如:

public BeanX {
   private int x1;
   private int x2;
   private List<BeanY> beany;
   …// getters and setters
}
public BeanY {
   private int x3;
   private int x4;
   private List<String> strings;
   …// getters and setters
}

在Java代码中,我只知道第一个Javabean(BeanX)的名称。是否可以发现BeanX使用的所有类型的所有属性并打印它们,例如:

BeanX.x1
BeanX.x2
BeanX.beany (BeanY)
BeanY.x3
BeabY.x4
BeanY.strings  (String)

参考资料:Javabean Introspector-我的列表中有什么?

您可以使用反射API来完成。这只是一个基本的代码。您可能想查看本教程了解更多信息。

主要类别

import java.util.*;
import java.lang.reflect.*;
import java.io.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        BeanX bx=new BeanX();
        printFields(bx.getClass());
    }
    static void printFields(Class bx ) throws java.lang.Exception{
            if(bx!=null && !bx.getSimpleName().equals("String")){
                for (Field field : bx.getDeclaredFields()){
                     field.setAccessible(true);
                     System.out.println(bx.getSimpleName()+"."+field.getName() 
                     +"->" +field.getGenericType());
                     if(field.getGenericType() instanceof ParameterizedType)
                        printFields((Class)(((ParameterizedType)field.getGenericType())
                        .getActualTypeArguments()[0]));
                }
            }
    }
}
class BeanX {
   private int x1;
   private int x2;
   private List<BeanY> beany;
   public void setBeany(List<BeanY> beany){
    this.beany=beany;
   }
}
class BeanY {
   private int x3;
   private int x4;
   private List<String> strings;
   public void setStrings(List<String> strings){
    this.strings=strings;
   }
}

输出

BeanX.x1->  int
BeanX.x2->  int
BeanX.beany->  java.util.List<BeanY>
BeanY.x3->  int
BeanY.x4->  int
BeanY.strings-> java.util.List<java.lang.String>

相关内容

  • 没有找到相关文章

最新更新