• Groovy学习()面向Java开发者的Groovy


    第一段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 '
    '
    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。

  • 相关阅读:
    质数检测器
    《视觉SLAM十四讲》学习日志(一)——预备知识
    C++类的介绍
    Python数据类型解析(基础篇)
    括号匹配详解
    哈夫曼树编码
    分治之归并,快速排序
    洛谷p2216 多次单调队列,扫描矩阵中的最大值减去最小值最的固定大小子矩阵
    洛谷p1886滑动窗口最大最小值 双单调队列
    洛谷p1725 露琪诺 单调队列优化的DP
  • 原文地址:https://www.cnblogs.com/tuhooo/p/8695235.html
Copyright © 2020-2023  润新知