一個輕量級的動態方法調用工具,透過 DSL 字串(如 com.example.Service.method("arg1", 123))在運行期解析並反射調用目標方法,適用於指令碼引擎、遠端指令下發、測試框架擴充等場景。專案代號 cms,主類 com.attilax.ast.MethodInvoker。
// 唯一入參:完整方法調用表達式
java -cp ... com.attilax.ast.MethodInvoker "com.attilax.net.HttpUtil.down('url', 'path')"
@echo off
set file=https://dl.pandaidea.com/jarfiles/a/android-json/android-json-rpc.jar.zip
set save=c:\0down.zip
java -classpath ".;.\classes;%~dp0bin;%atibrow_home%\bin;%~dp0WebRoot\WEB-INF\classes" \
-Djava.ext.dirs="%~dp0lib;%atibrow_home%\lib;%~dp0WebRoot\WEB-INF\lib" \
-Djava.library.path="%~dp0dll;%atibrow_home%\dll" \
com.attilax.ast.MethodInvoker "com.attilax.net.HttpUtil.down(\"%file%\", \"%save%\")"
pause
Class.forName(className) 載入類。getMethod(methodName, paramTypes) 或 getDeclaredMethod。method.setAccessible(true) 繞過權限檢查。method.invoke(null, args) 靜態方法調用;實例方法需先獲取/創建實例。URLClassLoader 載入外部 JAR,避免污染主應用 ClassLoader。obj.method1().method2().method3() 流式 DSL。作者:Attilax Akbar Al Rapanui(艾龍)
部落格:https://www.cnblogs.com/attilax/
郵箱:1466519819@qq.com