Java利用反射自動(dòng)封裝成實(shí)體對(duì)象的方法
本文實(shí)例講述了Java利用反射自動(dòng)封裝成實(shí)體對(duì)象的方法。分享給大家供大家參考。具體分析如下:
利用此方法的時(shí)候需要傳遞的參數(shù)的名稱,必須以行號(hào)結(jié)尾,去掉行號(hào)就是屬性名稱,比如頁(yè)面?zhèn)鬟fname+rowNo,那么實(shí)體對(duì)象的屬性名應(yīng)該為name。代碼如下
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)建對(duì)象實(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)前對(duì)象放到list中
objList.add(object);
}
return objList;
}
希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。
- 基于Java反射的map自動(dòng)裝配JavaBean工具類設(shè)計(jì)示例代碼
- Java如何將任意類型的Object對(duì)象轉(zhuǎn)換為相應(yīng)的實(shí)體對(duì)象
- java中給實(shí)體對(duì)象屬性的空值賦默認(rèn)值
- java開(kāi)發(fā)BeanUtils類解決實(shí)體對(duì)象間賦值
- Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作
- java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例
- 淺談Java實(shí)體對(duì)象的三種狀態(tài)以及轉(zhuǎn)換關(guān)系
- Java如何通過(guò)反射將map轉(zhuǎn)換為實(shí)體對(duì)象
相關(guān)文章
Java操作excel的三種常見(jiàn)方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Java操作excel的三種常見(jiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
SpringBoot中使用AOP實(shí)現(xiàn)日志記錄功能
AOP的全稱是Aspect-Oriented Programming,即面向切面編程(也稱面向方面編程),它是面向?qū)ο缶幊蹋∣OP)的一種補(bǔ)充,目前已成為一種比較成熟的編程方式,本文給大家介紹了SpringBoot中使用AOP實(shí)現(xiàn)日志記錄功能,需要的朋友可以參考下2024-05-05
java把字符串寫(xiě)入文件里的簡(jiǎn)單方法分享
這篇文章主要介紹了java把字符串寫(xiě)入到文件里的簡(jiǎn)單方法,這是跟一個(gè)外國(guó)朋友學(xué)的代碼,需要的朋友可以參考下2014-03-03
SpringBoot深入理解之內(nèi)置web容器及配置的總結(jié)
今天小編就為大家分享一篇關(guān)于SpringBoot深入理解之內(nèi)置web容器及配置的總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
SpringBoot2零基礎(chǔ)到精通之?dāng)?shù)據(jù)庫(kù)專項(xiàng)精講
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇我們來(lái)學(xué)習(xí)如何連接數(shù)據(jù)庫(kù)進(jìn)行操作2022-03-03
Java中struts2和spring MVC的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java中struts2和spring MVC的區(qū)別,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09
詳解如何在Spring MVC中處理AJAX請(qǐng)求
在現(xiàn)代 web 開(kāi)發(fā)中,AJAX(Asynchronous JavaScript and XML)被廣泛用于創(chuàng)建響應(yīng)式和動(dòng)態(tài)的用戶界面,與傳統(tǒng)的頁(yè)面刷新不同,AJAX 允許網(wǎng)頁(yè)在不重新加載的情況下與服務(wù)器交換數(shù)據(jù),從而提升了用戶體驗(yàn),本篇博客將深入探討如何在 Spring MVC 中處理 AJAX 請(qǐng)求2024-11-11

