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 ...
随机推荐
- Dart基础使用手册
程序入口 在每个app中必须有一个main()函数作为程序的入口点. 你可以在新建的flutter项目中找到它(main.dart) void main() => runApp(MyApp()) ...
- maven多模块
https://www.cnblogs.com/lichking2017/p/8996939.html
- token和session的区别及其发展史
其实token与session的问题是一种时间与空间的博弈问题, session是空间换时间,而token是时间换空间. 一.发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为 ...
- 【串线篇】Mybatis之动态sql
一.if标签 <select id="getTeacherByCondition" resultMap="teacherMap"> select * ...
- Java中避免空指针常见的方法
什么是空指针? 当一个变量的值为null时,在Java里表示一个不存在的空对象,没有实际内容,没有给它分配内存,null也是对象成员的默认值.所以,一个对象如果没有进行初始化操作,这时如果调用这个对象 ...
- Docker常规操作
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11601853.html Docker 常⽤命令 镜像相关 • docker pull <imag ...
- hdu 5810:Balls and Boxes(期望)
题目链接 这题似乎就是纯概率论.. E(V)=D(X_i)=npq (p=1/m,p+q=1) #include<bits/stdc++.h> using namespace std; t ...
- MySQL提示:too many connections
1.首先查询最大连接数 show variables like '%max_connections%'; 2.检查当前的连接情况: show processlist; 3.批量kill当前的连接: 通 ...
- 接触python的第2天:了解变量和打印
1变量不用定义类型, 可以直接赋值 >>> a =5 >>> a 5 >>> a='hello' >>> a 'hello' 2 ...
- 【Vue】新版vue解决跨域问题
vue.config.js module.exports = { devServer: { proxy: { "/api": { target: "http://192. ...