[英]retrieving POJO objects programmatically?
假設我有一個具有三個屬性的POJO類員工
1.姓名(字符串)2.地點(字符串)3.出生日期(日期)
然后我向數據庫中發射了一個查詢,該查詢檢索表的第一行並用表數據填充此POJO,如下所示:
名字-約翰所在地-美國生日-27/09/2014
要從此POJO中檢索值,我必須調用getName(),getLocation()和getDOB()。
但是有沒有什么方法可以讓我獲取對象類型數組中存儲在POJO中的所有值,而無需使用getter方法
例如:
Object[0] has the value "John".
Object[1] has the value "USA".
Object[2] has the value "27/09/2014".
(在我的情況下,一個類中大約有80個屬性,並且由於客戶的要求,這些屬性的數量增加了,我通過getter方法獲取每個值,並且每次添加單個屬性時,我都必須在其中編寫一個getter方法來獲取值的代碼。我基本上想要一個更動態的解決方案。)
我認為您正在尋找的是反射。
我希望此鏈接對http://docs.oracle.com/javase/tutorial/reflect/index.html或以下答案有所幫助: 是否可以使用Java Reflection打印出父類的屬性?
您可以嘗試以下方法:
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方法在此類中聲明為public,並且所有公共方法都返回String。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.