實體類解析

解析指定格式爲對象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());
		
	}
相關文章
相關標籤/搜索