如何在没有public no-arg构造函数的情况下获取pojo类的属性名称?

时间:2010-12-15 07:32:44

标签: java reflection pojo apache-commons-beanutils

我想获得POJO属性名称的数组(或列表)。 我尝试过commons-beanutil的BeanUtils.describe(obj),但它需要一个对象实例。 但是如果我只有那个类,没有公共的无参数构造函数会怎么样呢。我无法使用clazz.newInstance()生成对象。

我该如何解决?是否有任何库可以挖掘类并传递属性名称?

(我知道我可以使用反射来手动解析类结构,但我正在寻找一个方便的库)

感谢。

2 个答案:

答案 0 :(得分:4)

Java有自己的反射工具 - 你可以使用它。 Hava看一下java doc of Class

例如,使用反射Demo.class.getMethods();来获取名为Demo的类的所有getter方法(不进行实例化)。

List<Method> allGetterMethodsOfClassDemo() = new ArrayList<Method>();
for(Method method : Demo.class.getMethods()){
  if(method.getName().startsWith("get") || method.getName().startsWith("is")) {
    allGetterMethodsOfClassDemo.add(method);
  }
}

答案 1 :(得分:3)

我从未使用它(或java.beans中的任何内容),但java.beans.Introspector.getBeanInfo(Class)可能正是您正在寻找的内容。