第一段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 = 0
final year
Car(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。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章