groovy本其官方形容成JVM上的天使语言,确实也挺不错,开发起来也挺方便。而且从java过度groovy也很快。下面来谈谈我过渡这段时间遇到的问题吧。。。
首先选择合适的开发工具:eclipse虽然方便,但插件版本实在难把握,更新了几个groovy的插件都没法使。所以。。我用了intellij8
首先我创建了一个groovy script,代码如下:
tmp = 10
println(tmp)
tmp = "abc"
println(tmp)
//*************对比下面代码********************
def tmp = 10
println tmp
def tmp = "abc"
println tmp
第一部分代码打印结果是10和abc;第二部分代码编译不过,因为重复定义了变量名tmp
疑问
1 资料上说定义变量需要使用def关键字,但是第一部分代码,我没定义还不是照样用
那么用与不用def定义有什么区别吗?
嘿嘿,我想聪明人这时会用反编译器去了。先卖个关子这里我先不提。继续看代码
//设想方法定义前能否省略掉def
a()//能编译过吗?
{
}
def a()
{
}
遗憾的是方法必须得使用def。继续往下
//注意该代码写在groovy script中,非groovy类中
def c =10;
def a()
{
println(c)
}
a()
//**********对比如下代码**************************
c =10;
def a()
{
println(c)
}
a()
在不看运行结果前,根据之前的实验用与不用def声明定义变量效果都一样.
运行代码....
吃惊的发现第一部分代码运行不过,无法打印;第二部分代码输出10
第一部分代码报错提示如下:
Caught: groovy.lang.MissingPropertyException: No such property: c for class: s1
在不去看反编译结果前,我继续做了下面的测试
def a()
{
def c=10
println(c)
}
a()
//***************对比******************
def a()
{
c=10
println(c)
}
a()
//**************对比*****************
def a()
{
int c=10
println(c)
}
a()
运行发现:以上结果打印10.。。。呵呵继续往下,再次提醒以上代码都是在groovy script文件中编写,并非类里。
通过反编译器大致可以得出如下结论:在方法a()外用def定义的变量c,其作用范围是在run方法中,而run方法与a方法平级,方法a当然就不能调用.至于不用def在外定义可用,大家下来研究研究。
下面创建一个groovy的class,在里面做一些实验
public class c1 {
def r = 1000;
def a()
{
def r="abc"
println(r)
}
public static void main(String[] args)
{
def cc1 = new c1()//能否换成cc1 = new c1()或者 c1 cc1 = new c1()?
cc1.a()
println(cc1.getR())
}
}
考虑:代码能否编译?是否出现重命名的问题?如果可以运行println(r)的结果应该是多少?考虑主函数中的代码替换问题。
结果是:运行正确,打印abc,1000
主函数当中的代码能做替换吗?
能把def r="abc"换成 String r="abc"吗?
今天就先这些吧,避免把大家搞晕了
分享到:
相关推荐
Java中使用Groovy的三种方式,详细见我的博客。
Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
概述主要介绍Java、spring与groovy结合使用,高清英文版本
Making Java Groovy
java 动态脚本语言 精通 Groovy
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
java运行groovy 环境,搭建方便自己练习groovy使用 与后续定时调度动态代码做准备
Making Java Groovy Kenneth A. Kousen 1.Easier Java 2.Closures, builders, and metaprogramming 3.Gradle for builds, Spock for testing 4.Groovy frameworks like Grails and Griffon 源码
SpringBoot-Gradle-Maven-Java-Groovy:SpringBoot通过不同构建工具和语言实现。
Making Java Groovy--Kenneth.A.Kousen. Java Groovy 很不错的学习资料
干货:Jenkins Pipeline调用shell、python、java、groovy脚本的正确使用姿势.doc
java嵌入groovy所需jar 2.3.7最新版
Spock 是适合 Java 和 Groovy 应用程序的一个测试框架
1、eclipse安装groovy的插件。 2、创建java project。 3、把groovy-all-2.1.9.jar,加入...4、编写hello.groovy脚本文件,并在java代码中调用脚本文件 http://blog.csdn.net/bolg_hero/article/details/19077981
什么是 Groovy?...从学习的角度看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。(有时候会少很多!)
Along the way, and by virtue of its nature, Groovy was adopted by Java developers in a number of ways. For example, it was introduced in Java projects for testing purposes, because the Groovy syntax ...
Groovy入门经典是一个唯一能够扩展Java平台的脚本语言,内容全面详尽,浅显易懂,易于选择性阅读。可以作为对Groovy语言感兴趣的计算机软件开发人员的参考书。需要的朋友们就赶紧来下载试试吧! Groovy提供类似...
JGSK, Java,Groovy,Scala,Kotlin 四种语言的特点对比