从java类中提取所有字段

时间:2012-03-10 01:03:44

标签: java reflection

我想知道是否有一种简单的方法可以在给定的类中获取所有已定义的字段及其类型。如果类只包含原始类型,这将很容易。

实施例

public class A
{
    int aX;
    String aS;
};

public class B
{
    int bX;
    String bS;
    A aObj;
};

public Class C
{
    boolean bC;
    B bObj;
};

考虑到C的类,我想递归地提取所有字段(aX,aS,bX,bS,bC等......)。 虽然这并不是特别难以实现,但想知道是否有任何现有的库我可以利用像jackson json这样的东西,我认为它会有一些实用功能可以达到这个目的。

由于

1 个答案:

答案 0 :(得分:3)

最简单的方法是:

public static void run(Class c) {
  for(Field f : c.getFields()) {
    if(!f.getType().isPrimitive())
      System.out.println(f.getName());
    else
      run(f.getType());
  }
}

如果只使用外部库的一小部分,那么使用外部库(特别是在Java中)并不是一个好主意。额外的编译和加载使你的程序比它需要的慢,并占用太多空间值得。

参考:Java API on Class