java用Method執行字串方法
來源:互聯網
上載者:User
java用Method執行字串方法 //參考測試裝配方法 public static void main(String[] args) { SamplingFormDTO samplingForm=new SamplingFormDTO(); try{ String top = "setTop(23.1)"; dotMethod(top,samplingForm); } catch (Exception e) { e.printStackTrace(); } } /** * 由於座標點欄位較多,採用反射解析方法解決這個問題 * @param methodStr 方法名稱 * @param obj 參數 * @throws NoSuchMethodException * @throws SecurityException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ private void dotMethod(String methodStr,Object obj) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ //拆解方法字串,找出方法名 String methodName = methodStr.substring(0, methodStr.indexOf('(')); //找出參數 float[] args = null; String paramStr = methodStr.substring(methodStr.indexOf('(') + 1,methodStr.indexOf(')')); if(!paramStr.isEmpty()){ String[] tmp = paramStr.split(","); args = new float[tmp.length]; args[0] = Float.parseFloat(tmp[0]); } Class c = obj.getClass(); Method method = c.getMethod(methodName, float.class); //注意invoke的參數別寫錯了,你的方法是什麼類型,invoke就傳什麼型別參數 method.invoke(obj, args[0]);
} }