1. 程式人生 > >Java專案中使用groovy的兩種方式

Java專案中使用groovy的兩種方式

可能還有更多的使用方式,在此只記錄自己使用的兩種方式:

方式一

        String type = "List<String>";
        String jsonString = "[\"wei.hu\",\"mengna.shi\",\"fastJson\"]";

        Binding binding = new Binding();
        binding.setProperty("jsonString", jsonString);
        binding.setProperty("type", type);
        GroovyShell groovyShell = new
GroovyShell(binding); return groovyShell.evaluate( "import com.alibaba.fastjson.JSON;\n" + "import com.alibaba.fastjson.TypeReference;\n" + "TypeReference<"+ type +"> typeReference = new TypeReference<" + type +">(){};\n"
+ "JSON.parseObject(jsonString, typeReference);" );

方式二

1、定義一個groovy檔案 test.groovy:
(這裡有一個有意思的地方:無論將groovy檔案放在java資源的哪一個目錄下,IDEA都會將其對應的class檔案放在resource目錄的根目錄下)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

def test(String str1, String str2, String str3) {
    printf(str1 + "  "
+ str2 + " " + str3) def clos = {println "Hello ${it}"}; clos.call(str1); String jsonString = "[\"wei.hu\",\"mengna.shi\",\"fastJson\"]" return JSON.parseObject(jsonString, new TypeReference<List<String>>() {}) } test()

2、java呼叫

        GroovyObject groovyObject = (GroovyObject) ConfigInfoController.class.getClassLoader().loadClass("test").newInstance();

        Object[] objects = new Object[]{"abc", "def", "ghi"};
        groovyObject.invokeMethod("test", objects);