Groovy可以访问所有Java类,实际上Groovy类是Java类,可以直接由JVM运行。如果您正在从事Java项目,那么使用Groovy作为一种简单的脚本语言来与Java代码进行交互就变得很容易了。
为了使事情变得更好,几乎所有Java类都可以重命名为.groovy并进行编译和运行,并且可以像原来一样正常工作,groovy几乎是Java的超级集,这是groovy的既定目标。
Groovy有一个REPL。 groovysh如果您的类路径设置正确,则Groovy附带了该类,可用于快速实例化和测试Java类。例如,如果您classpath指向eclipse的“ classes / bin”目录,则可以将文件保存在eclipse中,跳转groovysh并实例化该类以对其进行测试。
使用Groovy而不是仅使用Java的原因是:类加载器非常擅长在编译新类时使用它们。在开发过程中,通常不需要退出/重新启动groovysh。
语法为TERSE。这对于可维护的代码不是很好,但是对于脚本和测试,它可以极大地削减代码。它要做的一大事情是消除检查的异常(或更准确地说,将所有检查的异常转换为未检查的异常)。这将变成这样的代码(一秒钟后打个招呼):
class JavaClass { public static void main(String[] args) { try { Thread.sleep(1000); } catch(InterruptedException e) { // 您不应该留下一个空的catch块,但是谁在乎这是否被打断了??? } System.out.println("Hello!"); } }
进入Groovy的:
Thread.sleep(1000) print "Hello!"
Groovy还具有非常严格的初始化语法。这使您无需考虑数据即可随意指定数据:
在Java中初始化映射,您可能应该执行以下操作:
String[] init = { "1:Bill", "2:Doug", "3:Bev" }; // 请注意,其余的这些可以放在函数中并重用,或者可以在库中找到,但是我似乎总是不得不编写此函数! Map m = new HashMap<Integer, String>(); for(String pair : int) { String[] split = pair.split(":"); m.put(new Integer(split[0]), split[1]) }
这还不错,但是还有其他需要维护的地方。在常规中,您将只使用:
Map map = { 1 : "Bill", 2 : "Doug", 3 : "Bev" }
您完成了。列表语法同样简单。
另一个真正的大优势是groovy的闭包语法。它非常简洁有趣,维护起来有些困难,但是对于脚本来说,这并不是优先考虑的事情。例如,这是一些常规代码,用于在当前目录中查找所有.txt包含该单词Hello的文件:
println new File('.').files.findAll{ it.name.endsWith('.txt') && it.text.contains('Hello') }.collect{it.name}
本示例使用了一些“ Groovy”技巧:
.files指的是getFiles()方法-groovy可以随意在getter / setter和属性语法之间切换
it.指代迭代的当前元素。{ it }是的快捷方式{ it -> it },例如:
[1、2、3] .collect {它^ 2} == [1、4、9]
it.text(it文件在哪里)使用groovy添加的方法File来检索文件的整个文本。这在脚本中非常有用。
问题内容: 按照以下两个最重要的答案:Maven依赖groovy。我正在尝试使用org.codehaus.gmaven的GMaven插件与Maven一起编译Java 6 + Groovy混合项目。直到昨天,我们仍在使用旧版本的Groovy(在最终使它工作后再也没有对其进行更改),但是由于现在稳定了,我认为我们应该切换到该版本。 如果只是这么简单。.我现在遇到的问题似乎有两个方面: 仍然以默认方式被
主要内容:Groovy插件,Groovy项目的默认项目布局本章介绍如何使用文件编译和执行Groovy项目。 Groovy插件 Gradle的Groovy插件扩展了Java插件,并为Groovy程序提供了任务。可以使用以下行来应用groovy插件。 完整的构建脚本文件如下。将以下代码复制到文件中。 可以使用以下命令来执行构建脚本。 Groovy项目的默认项目布局 Groovy插件假定Groovy项目有手动做过一定的设置。 包含Groovy源代码; 包含Gr
我试图使用groovy脚本创建Soapui项目。当直接从SoapUI运行它时,脚本工作正常,并且创建了使用WSDL的新项目。 该脚本是在:Project->TestSuite->TestCase->Groovy脚本中创建的 脚本在中正常工作。但是,在使用运行时失败,如下所示: 错误:java.lang.NullPointerException:无法对空对象调用方法createProject()
问题内容: 我已经看到有关将android转换为java项目的问题。现在,我想了解有关将Java项目转换为Android项目的信息。有什么办法吗?谢谢 问题答案: 第一路 安装ADT插件 右键单击Java项目 选择“ Android”>“转换为Android项目”。 供应文件夹,并且如果需要的话。 第二种方式:UPD 实际上,“第一种方式”不适用于最新的ADT插件版本,由于某种原因,谷歌已删除了c
问题内容: 我有一个完全用C编写的程序,其中使用了多个目标文件。这些文件都打包在一个存档文件中,而该存档文件又在程序主文件的编译时使用。 我想在Go中为此项目编写一个新文件。我的想法是编写此文件,然后从中创建一个目标文件。之后,我想将此对象文件放入已经提到的存档文件中。 这基本上意味着 我想从C程序调用Go函数。我已经阅读了这个问题,虽然它告诉我可以通过GCCGO实现我想要的东西,但是如何做到这一
让我们看一个例子. 为了使用 Groovy 插件, 加入下面的代码: 例子 8.1. Groovy 插件 build.gradle apply plugin: 'groovy' 注意:这个例子的代码可以在 samples/groovy/quickstart 在Gradle分布的 "-all" 中找到. 它也会同时把 Java 插件加入到你的项目里. Groovy 插件扩展了编译任务, 这个任务会在