groovy-脚本和类

简介:

groovy-脚本和类


在groovy中定义类和java中是一样的。类的方法可以是static,也可以是非static的。

groovy中的方法可以是public, protected, private,同时也支持java中的修饰符,比如synchronized。

在groovy中导入包或者导入类,语法和java是一样的。只不过在groovy中默认已经导入了下面的package:

1 java.lang
2 java.io
3 java.math
4 java.net
5 java.util
6 groovy.lang
7 groovy.util

在groovy和java中不同的一点就是,groovy默认是public的。

每一个groovy类,在JVM层级,都是字节码形式的java code,所以在java代码中可以调用groovy中申明的方法,反之亦然。

你可以指定方法的参数和返回值,以便他们能够更好的和java代码相互调用。当然你也可以实现接口或者重载方法。但是需要你没有指定方法后者属性的类型的话,那么在JVM层级的字节码中,他们将会是 java.lang.Object 类型。

比如:

1 //Callee.groovy
2 class Callee {
3  void hello() {
4  println "hello, world"
5  }
6 }
1 //Caller.groovy
2 c = new Callee()
3 c.hello()

下面给出了一个最简单的groovy脚本:

1 println "Nice cheese Gromit!"

如果你是要groovyc来编译上面的代码的话,假设你这个脚本的名字为Foo.script,那么你就会获得 Foo.class文件。

你可以在命令行运行下面的代码,假设你的classpath中包含:groovy.jar and asm.jar.

1 java Foo

这将执行自动生成的实例化Foo class的 main(String[] args)方法,然后调用run()方法。当然你可以可以直接在java中使用这个类,

1 import groovy.lang.Binding;
2 import groovy.lang.Script;
3  
4 public class UseFoo {
5  public static void main(String[] args) {
6  // lets pass in some variables
7  Binding binding = new Binding();
8  binding.setVariable("cheese", "Cheddar")
9  binding.setVariable("args", args)
10  
11 Script foo = new Foo(binding);
12  foo.run();
13  }
14 }

其实在上面这里没必要使用Binding,因为Foo 有一个无参的构造函数,尽管使用Binding 我们能够更加容易的传递参数。

相比起类来说,在groovy脚本中,变量不需要申明(def),在脚本中变量的引用将自动创建并放入Binding中。

在groovy脚本中,为了编写一个方法,没必要像java一样必须先定义一个类,

但是和传统的基于class的groovy而言,在类外定义函数需要使用def关键字。但是如果你需要一些比如static或者实例变量等等的东西的时候,最好写一个类。
下面给出了一个例子:

1 def foo(list, value) {
2  println "Calling function foo() with param ${value}"
3  list << value
4 }
5  
6 x = []
7 foo(x, 1)
8 foo(x, 2)
9 assert x == [1, 2]
10  
11 println "Creating list ${x}"
 

==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/p/3349051.html,如需转载请自行联系原作者
相关文章
|
新零售 数据采集 分布式计算
6000字干货分享:数据中台项目管理实践分享
本文总结了企业级数据中台项目的实践经验,希望能够为正在规划或者已在实施数据中台类项目的企业和个人提供经验。
6000字干货分享:数据中台项目管理实践分享
|
6月前
|
人工智能 自然语言处理 数据可视化
万小智2.0来啦!从AI建站,到建“AI站”
阿里云发布企业级AI建站平台「万小智2.0」,重塑建站全链路:从行业定制化生成、参考网站一键复刻,到ICP备案、部署上线、可视化运营后台一站式打通,真正实现“想法→上线→经营”闭环。
|
弹性计算
学生申请阿里云服务器流程,云工开物免费领取云服务器
学生可免费领取或低价购买阿里云服务器。通过“云工开物”计划,学生可申领300元无门槛代金券,用于购买指定云服务器产品。新用户可选38元/年的轻量应用服务器,老用户可选99元/年的ECS服务器,续费同价。具体优惠及操作流程可参考阿里云官方页面。
|
消息中间件 监控 网络协议
什么是中间件?
一、为什么要中间件 计 算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出 现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。
2211 97
|
10月前
|
存储 机器学习/深度学习 弹性计算
阿里云4核8G服务器ecs.c9i.xlarge实例规格族详细介绍:CPU、网络、存储及费用整理
阿里云ECS计算型c9i实例ecs.c9i.xlarge,4核8G配置,搭载Intel Xeon Granite Rapids处理器,主频3.2GHz,全核睿频3.6GHz,网络带宽最高15Gbps,云盘IOPS最高20万,支持可信计算。适用于机器学习推理、数据分析、高性能计算等场景,价格约0.77元/小时,371.82元/月,年付享7.1折优惠。
620 4
|
11月前
|
人工智能 自然语言处理 算法
2025中国AI数字人企业厂商权威榜单与数字重要技术及数字引擎选择指南
数字人企业正引领科技新浪潮,像衍科技、阿里、百度等凭借技术优势推动虚拟主播、智能客服等场景革新。融合AI与图形学,数字人实现拟人交互,赋能医疗、教育、金融等领域,从内容创作到服务模式全面升级,成为智能时代新生产力。
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
1098 4
Apple Safari 18.5 - macOS 专属浏览器 (独立安装包下载)
|
算法 Java 程序员
【福利😍】2024年最新103本互联网大厂程序员编程书合集【高清文字版无水印pdf】
推荐优质编程电子书资源,涵盖Python入门、算法设计、Java高并发、Docker、机器学习等领域,适合从小白到高级开发者。书籍包括《编程小白的第一本Python入门书》、《编程珠玑》等,助你提升技能,紧跟技术前沿,在职场中脱颖而出。下载地址含国内外网盘链接,更多资源可访问资料吧网站获取。
1604 0
|
前端开发 JavaScript UED
CSS Transition(过渡效果)详解
CSS Transition(过渡效果)详解
1969 1
|
存储 算法 C语言
芯片验证 | SystemVerilog使用简介
芯片验证 | SystemVerilog使用简介
678 0

热门文章

最新文章