zoukankan      html  css  js  c++  java
  • 23 在java中使用groovy类

    1       在java中使用groovy类

    1.1  直接调用groovy类

    在java中调用Groovy类,需要增加Groovy运行时到java的classpath中。

    pom.xml

    <dependency>

               <groupId>org.codehaus.groovy</groupId>

               <artifactId>groovy-all</artifactId>

               <version>2.4.5</version>

           </dependency>

    创建一个包:de.vogella.groovy.java

    创建一个Groovy类。

    package de.vogella.groovy.java

     

    import groovy.transform.ToString

     

    @ToString()

    class Person {

        String firstName

        String lastName

        int age

        def address

    }

    创建一个java类

    package de.vogella.groovy.java;

     

    public class Main {

        public static void main(String[] args) {

           Person p = new Person();

           p.setFirstName("zuoys");

           p.setLastName("遥远2");

           System.out.println(p.getFirstName() + " " + p.getLastName());

           System.out.println(p.toString());

        }

     

    }

    输出:

    zuoys 遥远2

    de.vogella.groovy.java.Person(zuoys, 遥远2, 0, null)

    1.2  Java调用Groovy脚本

    http://www.tuicool.com/articles/baQRVf

    JSR223方式

    package de.vogella.groovy.java;

     

    import java.util.Date;

     

    import javax.script.Bindings;

    import javax.script.Invocable;

    import javax.script.ScriptEngine;

    import javax.script.ScriptEngineManager;

     

    public class ExecuteGroovyViaJSR223 {

     

        public static void main(String[] args) {

           ScriptEngineManager factory = new ScriptEngineManager();

           // 每次生成一个engine实例

           ScriptEngine engine = factory.getEngineByName("groovy");

           System.out.println(engine.toString());

           assert engine != null;

           // javax.script.Bindings

           Bindings binding = engine.createBindings();

           binding.put("date", new Date());

           // 如果script文本来自文件,请首先获取文件内容

           try {

               engine.eval("def getTime(){return date.getTime();}", binding);

               engine.eval("def sayHello(name,age){return 'Hello,I am ' + name + ',age' + age;}");

               Long time = (Long) ((Invocable) engine).invokeFunction("getTime", null);

               System.out.println("执行结果:"+time);

               String message = (String) ((Invocable) engine).invokeFunction("sayHello", "zhangsan", new Integer(12));

               System.out.println("执行结果:"+message);

           } catch (Exception e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

     

        }

     

    }

    输出

    org.codehaus.groovy.jsr223.GroovyScriptEngineImpl@38af3868

    执行结果:1469518145323

    执行结果:Hello,I am zhangsan,age12

  • 相关阅读:
    nginx内置变量
    MySQL获取错误编号 try判断 获取 Exception 上的错误
    MySQL错误代码大全(转)
    PHP递归菜单/权限目录(无限极数组)
    PHP魔术方法
    php and和&&的一个坑(文章是发现其他博客,保存自己笔记)
    nginx配置php与前后端分离(文档只供本人观看,接受错误但勿喷!)
    servlet的构造器与init方法
    模板方法设计模式
    MVC
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/5719227.html
Copyright © 2011-2022 走看看