Groovy学习()面向Java开发者的Groovy
第一段Groovy代码
// first groovy program for(int i = 0; i < 3; i++) {System.out.println("ho "); }System.out.println("Merry Groovy");
看起来好简单。
还有更简单的方式:
for (i in 0..2) { print 'ho '}
0.upto(2) { print "$it "}
upto默认接受一个闭包作为参数,如果闭包只需要一个参数,在Groovy中可以使用名字it来表示该参数。
如果范围从0开始,还可以使用times
3.times { print "$it " }
Groovy没有强迫使用一组新的类库,而是可以通过向JDK的各种类添加便捷方法,Groovy扩展了强大的JDK。
比如调用系统命令
println "groovy.bat -v".execute().text
这里的bat不能省略,奶奶的。
或者可以这样
println "groovy.bat -v".execute().text println "cmd /C groovy -v".execute().text
def foo(str) {// if (str != null) { str.reverse(); }print str?.reverse() }foo('evil') print '\n' foo(null)
Java强制我们处理所有的受检查异常(Checked Exception)。
对于那些我们不想处理,或者不适合在代码的当前层次处理的异常,Groovy并不强制我们处理。
我们不处理的任何异常都会被自动传递到更高一层去。
// 定义打开文件 def openFile(fileName) {new FileInputStream(fileName) }try {openFile("nonexistentFile") } catch (FileNotFoundException ex) {println "Oops: " + ex }
注意,这里不能捕获Exception之外的Error或Throwable。要捕获这些请用catch(Throwable throwable)
class Car {def miles = 0final yearCar(theYear) {year = theYear} }Car car = new Car(2008)println "Year: $car.year" println "Miles: $car.miles" car.miles = 25 println "Miles: $car.miles"
看起来好简单的样子啊。
JVM不愧是宇宙第一虚拟机。
如果属性给了final,那么只会提供访问器,而不会提供更改器。
修改final字段的任何尝试都会导致异常。
请谨慎使用class属性,像Map、生成器等一些类对该属性有特殊的处理。因此为了避免意外,一般使用getClass,而不是class。
Groovy学习()面向Java开发者的Groovy相关推荐
- 面向Java开发者的ChatGPT提示词工程(5)
GPT 的局限性 当我们探讨开发大型语言模型应用程序时,必须认识到 GPT 存在一些局限性.这些限制对于我们保持清醒的头脑至关重要. 在 GPT 的训练过程中,虽然注入了大量知识,但它并不能完美地记住 ...
- 面向Java开发者的ChatGPT提示词工程(4)
在之前的文章中,我们了解到了编写明确具体的指令关键原则的四种策略,它们分别是: 使用分隔符清楚地指示输入的不同部分. 要求GTP结构化输出. 要求GTP检查是否满足条件. 写示例时提示词要尽量少一些. ...
- groovy java_在java中使用groovy怎么搞
临摹微笑 一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充.对于Java程序员来说,学习成本几乎为零.同时支持DSL ...
- Redis高频面试笔记:面向Java开发者的复习指南
前言 Redis作为基于键值对的NoSQL数据库,具有高性能.丰富的数据结构.持久化.高可用.分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用.因此,作为一个Java开发者,掌握 ...
- 面向java开发者的函数式编程_函数式编程让你忘记设计模式
本文是一篇<Java 8实战>的阅读笔记,阅读大约需要5分钟. 有点标题党,但是这确实是我最近使用Lambda表达式的感受.设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让 ...
- Java高级面试题!这是一份面向Java开发者的复习指南
流程描述 我们从bind函数开始: 1.首先创建了两个NioEventLoopGroup,这是初始化了两个线程组,这两个线程组根据命名可以知道一个是bossGroup,是服务器用来接收客户端的请求的, ...
- play2.0文档-面向java开发者(7)异步HTTP编程
为什么80%的码农都做不了架构师?>>> Handling asynchronous results 处理异步results Why asynchronous results? ...
- 面向Java开发者的ChatGPT提示词工程(2)
在这篇博客文章中,我将分享一些关于提示词的关键原则,帮助你在使用语言模型时获得更好的结果.具体来说,我将介绍两个关键原则,帮助你编写有效的提示词.同时,我也鼓励你在阅读文章的过程中运行代码,亲自体验不 ...
- 一文了解十大 Java 开发者必备测试框架!
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 想要提升自己的自动化测试技能吗?本文将介绍10个优秀的 Java 测试框架和库,来提升你的自 ...
最新文章
- 从 AlphaGo 到具有人类智慧的 AI 究竟有多远?François Chollet 有了一些新想法
- SQL Server 移动数据库
- securecrt7.0.0合并多个窗口
- IDA 7.5 Demo 包含 Windows、Linux、macOS
- java 动态字符串_Java动态编译执行一串字符串,类似于Javascript里的eval函数
- cshtml中引用css_css基础必备-使用样式,前端小白一看就会
- php 获取某个月的周一
- hadoop伪分布式配置
- 查看我的mysql_我的MYSQL学习心得(七) 查询
- Python中默认参数self的理解
- win11打开安全中心显示英文怎么办 windows11打开安全中心显示英文的解决方法
- 树莓派3B wiringPi 控制LED小灯
- 华为 项目管理10大模板 【Word版 (可直接套用)】
- AutoCAD2012从入门到精通中文视频教程 第20课 移动与旋转(个人收藏)
- Java中Base64的解析
- android 程序控制开关飞行模式,android开关飞行模式的方法
- 移动彩信大小限制307200字节?
- 毕业设计 - 基于机器视觉的12306验证码识别
- layui扩展组件(组合输入框inputTags)
- linux 电脑观看电视,使用Zattoo在您的Ubuntu桌面上观看直播电视
热门文章
- webpack打包转换es6_webpack(二)解析es6并打包
- python读取文件夹图片_读取文件夹里的图片,并且与标签对应
- cx oracle6 oracle10,python安装cx_Oracle
- laravel mysql 锁表_Laravel 数据库加密及数据库表前缀配置方法
- python name is not defined_PythonNameError: global name 'NAME' is not not defined这个问题怎么解决?...
- 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...
- 5 select 选择的值_表单元素之选择类型
- mysql parametertype_MyBatis传入参数与parameterType
- java juel表达式_activiti 自定义函数解析juel表达式
- cs怎么加电脑人_怎么给电脑文件夹加密码?