Java專案中使用groovy的兩種方式
阿新 • • 發佈:2018-12-30
可能還有更多的使用方式,在此只記錄自己使用的兩種方式:
方式一
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);