Groovy学习:第一章 用Groovy简化Java代码
1. Groovy的安装
目前Groovy的最新版本为2.1.2版,下载地址为:http://groovy.codehaus.org/Download
下载后解压groovy-binary-2.1.2.zip到某个目录,然后设置GROOVY_HOME环境变量指向Groovy的解压目录。
再设置PATH环境变量,添加%GROOVY_HOME%\bin。
要验证以上安装是否正确,在命令行方式,执行:
>groovy -v
Groovy Version: 2.1.2 JVM: 1.7.0_09 Vendor: Oracle Corporation OS: Windows 7
表示Groovy安装成功。
2. Groovy的第一个例子
我们先写一个Java类Todo.java,内容如下:
import java.util.List;
import java.util.ArrayList;
public class Todo{
private String name;
private String note;
public Todo(){}
public Todo(String name, String note){
this.name = name;
this.note = note;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getNote(){
return note;
}
public void setNote(String note){
this.note = note;
}
public static void main(String[] args){
List<Todo> todos = new ArrayList<Todo>();
todos.add(new Todo("1", "one"));
todos.add(new Todo("2", "two"));
todos.add(new Todo("3", "three"));
for(Todo todo : todos){
System.out.println(todo.getName() + " " + todo.getNote());
}
}
}
我们用javac编译它,用java运行它,一切正常。现在,我们把Todo.java改名为Todo.groovy,然后执行:
groovy Todo.groovy
我们会惊异地发现,与Java的执行结果一样。
结论:Groovy是兼容Java的。
运行Java持续有两步:用javac编译类文件,然后用java在JVM上执行编译后的字节码文件。
而Groovy是在运行时编译字节码文件,在开发中节省了编译这个步骤。
3. 用Groovy简化Java代码
下面,我们用Groovy简化JavaBean为GroovyBean。
import java.util.List;
import java.util.ArrayList;
public class Todo{
String name;
String note;
public static void main(String[] args){
List<Todo> todos = new ArrayList<Todo>();
todos.add(new Todo(name:"1", note:"one"));
todos.add(new Todo(name:"2", note:"two"));
todos.add(new Todo(name:"3", note:"three"));
for(Todo todo : todos){
System.out.println(todo.name + " " + todo.note);
}
}
}
执行结果仍然一样。
可见,
1)省略了JavaBean的getter和setter方法;
2)默认情况,所有的类属性都是public的;
3)构造函数很有特色,Map方式。
4. 用Groovy再进一步简化代码
执行结果仍然一样。
可见,
1)List和ArrayList省略了类型;
2)省略了分号;
3)打印语句省略了System.out。
5. 用Groovy再进一步省略main()函数
public class Todo{
String name
String note
}
def todos = [
new Todo(name:"1", note:"one"),
new Todo(name:"2", note:"two"),
new Todo(name:"3", note:"three")
]
todos.each{
println "${it.name} ${it.note}"
}
看了以上内容,你们对Groovy有什么看法?下一节我们将介绍Groovy语言的关键特征。
Groovy学习:第一章 用Groovy简化Java代码的更多相关文章
- JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇
JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...
- web学习第一章
web学习第一章 我是大概9月10日开始走上IT之路的,一开始学习了小段时间的自动化办公软件, 昨天我开始学习客户端网页编程,我了解什么是WEB,一些比较老古董的计算模式和发展历史,印象最让我深刻 ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- lombok 简化java代码注解
lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...
- Lombok简化Java代码
导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...
- Java基础知识二次学习-- 第一章 java基础
基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...
- 【转载】Gradle学习 第九章:Groovy快速入门
转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...
- Intel汇编语言程序设计学习-第一章 基本概念
第一章基本概念 1.1 简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用I ...
随机推荐
- 自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
1.使该Task继承Callable,Runable import java.util.concurrent.Callable; import java.util.function.Consumer; ...
- SIP UserAgent (B2BUA client)——libosip2 libeXosip2
1. libosip2 libeXosip2 http://www.antisip.com/download/exosip2/ Features:--------eXosip2 has support ...
- 牛客小白月赛16 H小阳的贝壳 (线段树+差分数组)
链接:https://ac.nowcoder.com/acm/contest/949/H来源:牛客网 题目描述 小阳手中一共有 n 个贝壳,每个贝壳都有颜色,且初始第 i 个贝壳的颜色为 colico ...
- Machine Learning:机器学习算法
原文链接:https://riboseyim.github.io/2018/02/10/Machine-Learning-Algorithms/ 摘要 机器学习算法分类:监督学习.半监督学习.无监督学 ...
- bzoj4007 & loj2111 [JLOI2015]战争调度 复杂度分析+树上背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4007 https://loj.ac/problem/2111 题解 同 [NOI2006]网络 ...
- Matlab中利用null函数解齐次线性方程组
摘自:http://blog.csdn.net/masibuaa/article/details/8119032 有齐次线性方程AX=0,且rank(A)=r<n时,该方程有无穷多个解, 可以用 ...
- Spring---数据缓存Cache
1.Spring缓存支持 1.1.Spring定义了org.springframework.cache.CacheManager类.org.springframework.cache.Cache类接口 ...
- iOS项目开发中的知识点与问题收集整理①
前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...
- Java反射及注解学习- 反射的使用 - JDK动态代理
代理模式基本概念:1.代理模式的作用:为其他对象提供一种以控制对方的访问在某种情况下,一个客户不想或者不能直接引用另一个对象,代理可以在客户端和目标对象之间起到中介的作用代理的角色:(1)抽象角色:声 ...
- CNN笔记:通俗理解卷积神经网络
CNN笔记:通俗理解卷积神经网络 2016年07月02日 22:14:50 v_JULY_v 阅读数 250368更多 分类专栏: 30.Machine L & Deep Learning 机 ...