• Groovy_java


    一:什么是Groovy

      简单地说, Groovy 是下一代的 java 语言,跟 java 一样 , 它也运行在 JVM 中。作为跑在 JVM 中的另一种语言, groovy 语法与 Java 语言的语法很相似。同时, Groovy 抛弃了 java 烦琐的文法。同样的语句,使用 groovy 能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。

    二:Groovy安装

     1.windows安装Groovy

      下载地址:https://groovy.apache.org/download.html

      使用windows安装包(只有部分版本提供):

      下载二进制文件安装:

      • 下载一个Groovy二进制版本并且解压缩到本地盘上(你想要安装的位置)
      • 设置GROOVY_HOME环境变量到刚刚解压缩安装目录
      • 在PATH环境变量后面加入GROOVY_HOME/bin环境变量
      • 设置好JAVA_HOME环境变量,如果你使用过Ant或Maven这样的构建工具这一步应该已经设置好了
      • 以上已安装好groovy,使用如下:
      • Groovysh-----打开groovy shell命令交互窗口
      • groovyConsole-----打开图形化交互页面
      • groovy someScirpt-----groovy执行执行groovy脚本

     2.linux安装Groovy

     3.IDE集成Groovy

      使用mavne集成:

    只是没有模块*的Groovy的核心。还包括jarjar'ed版本的Antlr,ASM以及所需CLI实现类的内部副本
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy</artifactId>
    <version>x.y.z</version>
    
    "$module"代表不同的可选groovy模块*。示例:<artifactId>groovy-sql</artifactId>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-$module</artifactId>
    <version>x.y.z</version>
    
    核心加上所有模块(不包括可选模块),根据版本打包方案**。
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>x.y.z</version>
    <type>pom</type> <!-- required JUST since Groovy 2.5.0 -->

     4.Groovy版本管理器

       linux选择SDKMAN或者GVM(Groovy enVironment Manager)

    二:JAVA和Groovy混合使用

     1.JAVA类中调用Groovy类

    以下是Java调用Groovy测试类:
    import com.zcx.springstudy.groovy.groovyUtils.DynamicGroovyClass;
    import groovy.lang.GroovyObject;
    
    public class GroovyTest {
        public static void main(String[] args) {
            GroovyObject instance = new DynamicGroovyClass();
            Object result1 = instance.invokeMethod("querk","18");
            System.out.println("received:"+result1);
            Object result2 = instance.invokeMethod("like",new Object[]{"1","22","33"});
            System.out.println("received:"+result2);
        }
    }
    
    以下是Groovy类:
    package com.zcx.springstudy.groovy.groovyUtils
    
    class DynamicGroovyClass {
        //当调用此groovy类的方法不存在时执行此方法
        def methodMissing(String name,args) {
            println("you called $name with ${args.join(', ')}")
            args.size()
        }
        //地定义的groovy方法
        def querk(String age) {
            println("已经调用到querk方法....")
            println("age==="+age)
        }
    }

     2.Java类中调用Grovvy脚本

    以下是再java类中调用groovy脚本:
    package com.zcx.springstudy.groovy;
    
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class CallGroovy {
    
        public static void main(String[] args) {
            qianruCall();//调用嵌入式groovy脚本
        }
    
        //嵌入式调用groovy脚本
        public static void qianruCall() {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("groovy");
            try {
                engine.put("name","Tom1");
                Object result = engine.eval("println("hello $name");name = "Tom2"");
                System.out.println("receive return:" + result);
            } catch (ScriptException e) {
                e.printStackTrace();
            }
        }
    
    }

     3.Groovy类中调用JAVA类

    以下是在groovy类中调用java类中的方法测试:
    package com.zcx.springstudy.groovy.groovyUtils
    
    import com.zcx.springstudy.groovy.Demo1JavaClass
    
    //groovy方法中调用java方法
    def demo1() {
        //调用java类中的方法
        Demo1JavaClass.method1()
    }
    //调用groovy方法
    demo1()
    
    以下是java类:
    package com.zcx.springstudy.groovy;
    
    public class Demo1JavaClass {
        public static void method1() {
            System.out.println("已经调用到java代码了!!!");
            System.out.println("hello java!!!");
        }
    }

     4.Groovy类中调用Groovy脚本

    以下为groovy类调用groovy脚本测试:
    package com.zcx.springstudy.groovy.groovyUtils
    
    //groovy方法中调用groovy脚本
    def demo1() {
        name = "Tom1"
        shell = new GroovyShell(binding)
        //调用脚本
        evaluate(new File("./ScriptGroovy1.groovy"))
    }
    
    //调用
    demo1()
    
    以下是groovy脚本:
    package com.zcx.springstudy.groovy.groovyUtils
    
    println("name $name")
    name = "Tom2"

     5.Groovy脚本中调用JAVA类

    以下是groovy类中调用java类:
    package com.zcx.springstudy.groovy.groovyUtils
    
    import com.zcx.springstudy.groovy.Demo1JavaClass
    //调用java类中的方法
    Demo1JavaClass.method1()
    
    以下 是java类:
    package com.zcx.springstudy.groovy;
    
    public class Demo1JavaClass {
        public static void method1() {
            System.out.println("已经调用到java代码了!!!");
            System.out.println("hello java!!!");
        }
    }

     6.Groovy脚本中执行Groovy类

    以下是在groovy脚本中调用groovy类测试:
    package com.zcx.springstudy.groovy.groovyUtils
    
    dynamic = new DynamicGroovyClass()
    dynamic.querk("20")
    
    以下是groovy类:
    package com.zcx.springstudy.groovy.groovyUtils
    
    class DynamicGroovyClass {
        def querk(String age) {
            println("已经调用到querk方法....")
            println("age==="+age)
        }
    }

     7.Groovy脚本中执行Groovy脚本:

    以下是groovy脚本中调用groovy脚本:
    package com.zcx.springstudy.groovy.groovyUtils
    
    println("now in script2")
    //使用指定的binding1用于传参,默认为binding
    binding1 = new Binding()
    binding1.setProperty("name","Tom1")
    shell = new GroovyShell(binding1)
    //调用脚本
    result = shell.evaluate(new File("./ScriptGroovy1.groovy"))
    //接收返回值
    println("receive1 return: $result")
    println("hello "+binding1.getProperty("name"))
    
    以下是被调用的groovy脚本:
    package com.zcx.springstudy.groovy.groovyUtils
    
    println("name $name")
    name = "Tom2"

     

  • 相关阅读:
    Unity 高斯模糊
    Unity 描边效果
    Unity 单例模式
    C++ 高质量程序设计指南读书笔记
    visualgo 各种算法的具体实现——排序篇
    UE4 Texture操作总结
    UE4 使用WASAPI获取系统音频
    C++ 前置声明
    跟着pyAudioAnalysis学语音
    排序算法(高级篇,整理自学堂在线邓俊辉老师《数据结构》课程)
  • 原文地址:https://www.cnblogs.com/chunxiaozhang/p/11190569.html
Copyright © 2020-2023  润新知