今天培老師寫了個工具方法,令我嘆為觀止,不知道自己多久才能達到這個水平,準確的是達到他思考如何解決問題的這個思維高度
大概需求就是:需要在一個接口中(A)調用另一個類中的接口(B),這時候需要,但是這個接口A獲取的是dto,接口B是沒有封裝格式化的數據,需要在dto中get到屬性,傳給接口B,本來是本法子,就是一個個的獲取,但是培老師,寫了個工具方法,直接生成了我想要的代碼段。
具體代碼如下:
public static void addPrint(Class<?> clazz, String methodName) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
Method addMethod = null;
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
if (declaredMethod.getName().equals(methodName)) {
addMethod = declaredMethod;
break;
}
}
System.out.println("return executeControl.mobileUpd(");
Parameter[] parameters = addMethod.getParameters();
Object[] args = new Object[parameters.length];
for (int i = 0; i < parameters.length; i++) {
String paramName = parameters[i].getName();
System.out.print("reqWrEditDTO.get" + paramName.substring(0,1).toUpperCase() + paramName.substring(1) + "()");
if (i != parameters.length - 1) {
System.out.println(",");
}
}
System.out.println(");");
}
下面寫出我自己的理解,大致過程就是獲取clazz文件,然后通過反射獲取到其中的方法,遍歷找到方法B,然后通過getParameters方法,獲取到其中的參數,剩下的就是一些完善格式的代碼。無疑是提高了很高的效率。
希望以后自己在解決問題時,也能這樣思考。多積累