比方说,比方说我有一个有三个属性的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方法来获取值。我基本上想要一个更动态的解决这个问题的方法。)
答案 0 :(得分:0)
我认为你所寻找的是反射。
我希望此链接有助于http://docs.oracle.com/javase/tutorial/reflect/index.html 或者这个答案: Is it possible to use Java Reflection to print out attributes of the parent class?
答案 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。