接觸Groovy也快一年了,一直在嘗試怎么將Groovy引用到日常工作中來。最近在做一個功能的時候,花了點時間重新看了下Java怎么調用Groovy的方法、傳遞參數和獲取返回值。
示例Groovy代碼如下:
# TestGroovy.groovy 定義testC方法,傳入3個參數,返回處理后的數據
def testC(int numA, int numB, int numC) {
"傳入參數:" + numA + numB + numC + "計算之和為:" + (numA + numB + numC)
# groovy會默認返回最后一行的值
}
示例Java代碼如下:
import java.io.File; import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; public class JavaUseGroovyTest { static Object runWithGroovyClassLoader() throws Exception { // 獲取當前資源路徑,用於指定Groovy腳本 String base_path = JavaUseGroovyTest.class.getResource("/").toString().split("file:/")[1]; // 使用當前線程的context創建GroovyClassLoader // parseClass()方法將文件解析成可以運行的class Class aClass = new GroovyClassLoader().parseClass(new File(base_path + "TestGroovy.groovy")); // 創建此 Class 對象所表示的類的一個新實例 GroovyObject groovyObject = (GroovyObject) aClass.newInstance(); // groovy 方法的入參,多個參數從左到右書寫,無入參保持為空new Object[]{} Object[] objects = new Object[]{1, 3, 2}; // 調用方法 testC 並獲得返回值(如果后者存在) return groovyObject.invokeMethod("testC", objects); } public static void main(String[] args) throws Exception {
// 將返回值打印到控制台 System.out.println(runWithGroovyClassLoader()); } }
輸出結果:
傳入參數:132計算之和為:6
