码迷,mamicode.com
首页 > 编程语言 > 详细

从java调用groovy

时间:2015-06-28 15:30:59      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

需要将groovy-2.4.3.jar加入到classpath中

一:在java中用GroovyClassLoader执行groovy代码

CalculateMax.groovy

技术分享
1 class CalculateMax{
2     def Integer getMax(List values){
3         values.max();
4     }
5 }
View Code

UseGroovyClassLoader.java

技术分享
 1 package groovy_java_1;
 2 
 3 import java.io.File;
 4 import java.util.ArrayList;
 5 
 6 import groovy.lang.GroovyClassLoader;
 7 import groovy.lang.GroovyObject;
 8 
 9 public class UseGroovyClassLoader {
10     public static void main(String[] args){
11         GroovyClassLoader loader = new GroovyClassLoader();
12         try{
13             Class<?> groovyClass = loader.parseClass(new File("src/groovy_java_1/CalculateMax.groovy"));
14             GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); 
15             ArrayList<Integer> numbers = new ArrayList<Integer>();
16             numbers.add(new Integer(1));
17             numbers.add(new Integer(10));
18             Object[] arguments = {numbers};
19             Object value = groovyObject.invokeMethod("getMax", arguments);
20             assert value.equals(new Integer(10));
21             System.out.println(value);
22         }catch(Exception e){
23             e.printStackTrace();
24         }
25     }
26 
27 }
View Code

 

二:在java中用GroovyShell执行groovy代码

UseGroovyShell.java

技术分享
 1 package groovy_java_0;
 2 
 3 import java.math.BigDecimal;
 4 
 5 import groovy.lang.Binding;
 6 import groovy.lang.GroovyShell;
 7 
 8 public class UseGroovyShell {
 9     public static void main(String[] args){
10         Binding binding = new Binding();
11         binding.setVariable("x", 2.4);
12         binding.setVariable("y",8);
13         GroovyShell shell = new GroovyShell(binding);
14         Object value = shell.evaluate("x+y");
15         assert value.equals(new BigDecimal(10.4));
16     }
17 
18 }
View Code

 

三:在java中用GroovyScriptEngine执行Groovy代码

Hello.groovy

技术分享
1 def hellostatement = "hello ${name}"
View Code

UseGroovyScriptEngine.java

技术分享
 1 package groovy_java_2;
 2 
 3 import groovy.lang.Binding;
 4 import groovy.util.GroovyScriptEngine;
 5 
 6 public class UseGroovyScriptEngine {
 7     public static void main(String[] args){
 8         try {
 9             String[] roots = new String[]{"src/groovy_java_2"};    //设置根目录
10             GroovyScriptEngine gse = new GroovyScriptEngine(roots);    //初始化引擎
11             
12             Binding binding = new Binding();
13             binding.setVariable("name", "Gweneth");
14             
15             Object output = gse.run("Hello.groovy", binding);
16             System.out.println(output);
17             assert output.equals("hello Gweneth");
18 
19         } catch (Exception e) {
20             // TODO: handle exception
21             e.printStackTrace();
22         }
23     }
24 
25 }
View Code

 

从java调用groovy

标签:

原文地址:http://www.cnblogs.com/frankM/p/4605497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!