解析指定格式爲對象java
/** * 解析指定格式爲對象 * @param string格式數據:<a>**</a><b>**</b> * @param obj 對象 * @return */ public static Object setParamToObj(String string,Object obj){ String[] args=string.split("<"); for(int i=1; i<args.length;i++){ System.out.println(i+"=="+args[i]); String[] arg=args[i].split(">"); obj=values(arg[0],arg[1],obj); i++; } return obj; } /** * 設置對象對應的熟悉值 */ private static Object values(String key,Object value,Object bean){ String methodName="set"+key.substring(0,1).toUpperCase()+key.substring(1); System.out.println(methodName); try{ Method[] methods = bean.getClass().getMethods(); for(Method method:methods){ //若是方法同名則執行該方法(不能用於BO中有重載方法的狀況) if(methodName.equals(method.getName())){ //設置參數類型 Class<?>[] clazz = method.getParameterTypes(); String type = clazz[0].getName(); if(type.equals("java.lang.String")){ method.invoke(bean,(String)value); } else if(type.equals("java.util.Date")){ method.invoke(bean, (Date)value); } else if(type.equals("java.lang.Integer")){ method.invoke(bean, new Integer((String)value)); }else{ method.invoke(bean, value); } } } }catch (Exception e) { e.printStackTrace(); } return bean; }
設置對象爲指定格式app
/** * 設置對象爲指定格式 * @param args 屬性 * @param obj 對象 * @return 格式數據:<a>**</a><b>**</b> */ public static String getParamTostring(String[] args,Object obj){ StringBuffer string=new StringBuffer(""); if(obj!=null){ for(int i=0;i<args.length;i++){ string.append("<"+args[i]+">"+values(args[i], obj)+"</"+args[i]+">"); } } return string.toString(); } /** * 獲取對象對應的熟悉值 */ private static String values(String key,Object bean){ String value=""; String methodName=key.substring(0,1).toUpperCase()+key.substring(1); try{ Method method=bean.getClass().getDeclaredMethod("get"+methodName); Object obj=method.invoke(bean); if(obj!=null){ value=obj.toString(); } }catch (NoSuchMethodException e) { e.printStackTrace(); System.out.println("該屬性在Bean中沒有相應的get方法!!"); }catch (IllegalArgumentException e) { e.printStackTrace(); System.out.println("方法的參數錯誤!!"); }catch (IllegalAccessException e) { e.printStackTrace(); System.out.println("當前正在執行的方法沒法訪問指定類、字段、方法或構造方法的定義!!"); }catch (InvocationTargetException e) { e.printStackTrace(); System.out.println("是一種包裝由調用方法或構造方法所拋出異常的通過檢查的異常!!"); } return value; }
測試測試
public static void main(String[] args) { Test t=new Test("1","2"); String[] param={"a","b"}; String string=getParamTostring(param,t); Test t2=setParamToObj(string,new Test()); System.out.println(t2.getA()); }