本文實例講述了Java利用反射自動封裝成實體對象的方法。分享給大家供大家參考。具體分析如下:
利用此方法的時候需要傳遞的參數的名稱,必須以行號結尾,去掉行號就是屬性名稱,比如頁面傳遞name+rowNo,那么實體對象的屬性名應該為name。代碼如下
public List getObjectList(Class clazz,String[] rowNos) throws Exception{
List objList = new ArrayList();
for(int i=0;rowNos!=null && i<rowNos.length;i++){
//創建對象實例
Object object = clazz.newInstance();
//獲取類聲明的屬性
Field[] fields = clazz.getDeclaredFields();
StringBuffer buffer = null;
//遍歷屬性,執行封裝
for(int j=0;j<fields.length;j++){
//獲取屬性的名字
String fieldName = fields[j].getName();
//得到參數的名字
String paraName = fields[j].getName()+rowNos[i];
//如果獲取參數值為空則繼續循環
String value = getValueNull(paraName);
if(value==null){
continue;
}
//參數值
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);
}
//參數類型
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);
//執行方法
method.invoke(object,paramValue);
}
//將當前對象放到list中
objList.add(object);
}
return objList;
}
希望本文所述對大家的Java程序設計有所幫助。