以编程方式检索POJO对象?

时间:2014-09-27 15:27:48

标签: java sql oop reflection

比方说,比方说我有一个有三个属性的POJO班级员工

1.Name(String) 2.Location(String) 3.出生日期(日期)

然后我向数据库发出一个查询,该数据库检索第一行表并填充此POJO 表格数据如下: -

姓名 - 约翰 位置 - 美国 出生日期 - 2014年9月27日

要从此POJO中检索值,我必须调用getName(),getLocation()和getDOB()。

但是有没有任何方法可以在不使用getter方法的情况下获取存储在POJO中的所有值,在Object类型数组中

例如:

Object[0] has the value "John".
Object[1] has the value "USA".
Object[2] has the value "27/09/2014".

(在我的例子中,一个类中有大约80个属性,并且这些属性的数量因客户端要求而增加,我通过getter方法获取每个值,并且每次添加单个属性时我都必须写一个代码中的getter方法来获取值。我基本上想要一个更动态的解决这个问题的方法。)

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你可以试试这个:

    String[] getObjectsPublicMethods(Object o)
{
    Class clazz = o.getClass();
    Method[] methods = clazz.getDeclaredMethods();
    String[] result = new String[methods.length];
    for (int i=0; i<methods.length; ++i)
    {
        try
        {
            result[i] = (String) methods[i].invoke(o, new Object[] {})
        } catch (IllegalAccessException e)
        {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (InvocationTargetException e)
        {

        }
    }
    return result;        
}

此方法使用反射来获取所需的信息,但是 它假定getter方法在此类AND中声明为public 所有公共方法都返回String。