工作隨筆——Java調用Groovy類的方法、傳遞參數和獲取返回值


接觸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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM