Java利用反射自動(dòng)封裝成實(shí)體對象的方法
更新時(shí)間:2015年01月16日 11:07:41 投稿:shichen2014
這篇文章主要介紹了Java利用反射自動(dòng)封裝成實(shí)體對象的方法,可實(shí)現(xiàn)自動(dòng)封裝成bean對象功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了Java利用反射自動(dòng)封裝成實(shí)體對象的方法。分享給大家供大家參考。具體分析如下:
利用此方法的時(shí)候需要傳遞的參數(shù)的名稱,必須以行號結(jié)尾,去掉行號就是屬性名稱,比如頁面?zhèn)鬟fname+rowNo,那么實(shí)體對象的屬性名應(yīng)該為name。代碼如下
復(fù)制代碼 代碼如下:
//獲取頁面數(shù)據(jù),自動(dòng)封裝成bean對象
public List getObjectList(Class clazz,String[] rowNos) throws Exception{
List objList = new ArrayList();
for(int i=0;rowNos!=null && i<rowNos.length;i++){
//創(chuàng)建對象實(shí)例
Object object = clazz.newInstance();
//獲取類聲明的屬性
Field[] fields = clazz.getDeclaredFields();
StringBuffer buffer = null;
//遍歷屬性,執(zhí)行封裝
for(int j=0;j<fields.length;j++){
//獲取屬性的名字
String fieldName = fields[j].getName();
//得到參數(shù)的名字
String paraName = fields[j].getName()+rowNos[i];
//如果獲取參數(shù)值為空則繼續(xù)循環(huán)
String value = getValueNull(paraName);
if(value==null){
continue;
}
//參數(shù)值
Object[] paramValue =new Object[1];
if(fields[j].getType().toString().equals("class java.lang.String")){
paramValue[0]=value;
}
if(fields[j].getType().toString().equals("class java.lang.Integer")){
paramValue[0]=new Integer(value);
}
if(fields[j].getType().toString().equals("class java.lang.Double")){
paramValue[0]=new Double(value);
}
if(fields[j].getType().toString().equals("class java.util.Date")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
paramValue[0]=sdf.parse(value);
}
//參數(shù)類型
Class[] paramType= {fields[j].getType()};
//得到set方法的名字
buffer = new StringBuffer("set");
buffer.append(fieldName.substring(0, 1).toUpperCase());
buffer.append(fieldName.substring(1));
//獲取放回
Method method = clazz.getDeclaredMethod(buffer.toString(), paramType);
//執(zhí)行方法
method.invoke(object,paramValue);
}
//將當(dāng)前對象放到list中
objList.add(object);
}
return objList;
}
public List getObjectList(Class clazz,String[] rowNos) throws Exception{
List objList = new ArrayList();
for(int i=0;rowNos!=null && i<rowNos.length;i++){
//創(chuàng)建對象實(shí)例
Object object = clazz.newInstance();
//獲取類聲明的屬性
Field[] fields = clazz.getDeclaredFields();
StringBuffer buffer = null;
//遍歷屬性,執(zhí)行封裝
for(int j=0;j<fields.length;j++){
//獲取屬性的名字
String fieldName = fields[j].getName();
//得到參數(shù)的名字
String paraName = fields[j].getName()+rowNos[i];
//如果獲取參數(shù)值為空則繼續(xù)循環(huán)
String value = getValueNull(paraName);
if(value==null){
continue;
}
//參數(shù)值
Object[] paramValue =new Object[1];
if(fields[j].getType().toString().equals("class java.lang.String")){
paramValue[0]=value;
}
if(fields[j].getType().toString().equals("class java.lang.Integer")){
paramValue[0]=new Integer(value);
}
if(fields[j].getType().toString().equals("class java.lang.Double")){
paramValue[0]=new Double(value);
}
if(fields[j].getType().toString().equals("class java.util.Date")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
paramValue[0]=sdf.parse(value);
}
//參數(shù)類型
Class[] paramType= {fields[j].getType()};
//得到set方法的名字
buffer = new StringBuffer("set");
buffer.append(fieldName.substring(0, 1).toUpperCase());
buffer.append(fieldName.substring(1));
//獲取放回
Method method = clazz.getDeclaredMethod(buffer.toString(), paramType);
//執(zhí)行方法
method.invoke(object,paramValue);
}
//將當(dāng)前對象放到list中
objList.add(object);
}
return objList;
}
希望本文所述對大家的Java程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- 基于Java反射的map自動(dòng)裝配JavaBean工具類設(shè)計(jì)示例代碼
- Java如何將任意類型的Object對象轉(zhuǎn)換為相應(yīng)的實(shí)體對象
- java中給實(shí)體對象屬性的空值賦默認(rèn)值
- java開發(fā)BeanUtils類解決實(shí)體對象間賦值
- Java 判斷實(shí)體對象及所有屬性是否為空的操作
- java實(shí)體對象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例
- 淺談Java實(shí)體對象的三種狀態(tài)以及轉(zhuǎn)換關(guān)系
- Java如何通過反射將map轉(zhuǎn)換為實(shí)體對象
相關(guān)文章
超詳細(xì)解析Spring Bean的創(chuàng)建過程
這篇文章主要揭秘了Spring Bean的創(chuàng)建過程,文中通過代碼示例和圖文結(jié)合的方式解析的超級詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05使用JavaIO流和網(wǎng)絡(luò)制作一個(gè)簡單的圖片爬蟲
這篇文章主要介紹了使用JavaIO流和網(wǎng)絡(luò)制作一個(gè)簡單的圖片爬蟲,通過關(guān)鍵字爬取百度圖片,這個(gè)和我們使用搜索引擎搜索百度圖片是一樣的,只是通過爬蟲可以學(xué)習(xí)技術(shù)的使用,需要的朋友可以參考下2023-04-04