Groovy和Java相比的特点

举报
莫逸风 发表于 2022/07/26 15:47:23 2022/07/26
【摘要】 Groovy和Java相比的特点

一、Groovy和Java相比的特点

  1. Groovy完全兼容Java语法。

  2. 分号是可选的。

  3. 类、方法默认都是public。

  4. 编译器自动给属性添加getter/setter方法。

  5. 属性可以用点号直接获取。

    1. 直接使用点号属性名访问的是编译器自动添加的getter方法。
  6. 最后一个表达式的值会被作为返回值。

  7. ==等同于equals(),不会有NullPointException异常抛出。

  8. assert语句进行断言操作。

  9. 弱类型编程语言 def。

  10. 可选括号。

  11. 字符串三种表达形式,’’,"",’’’’’’,

    1. 单引号就只是一个字符串。
    2. 双引号中间可以使用${}插入变量def s2 = "s2 ${version}"
    3. 三引号里面的内容可以换行。
  12. 集合API具有更简单的写法。

    // 定义集合
    def buildTools = ["ant","maven"]
    // 添加元素
    buildTools << 'gradle'
    // 默认类型是ArrayList
    assert buildTools.getClass() == ArrayList
    assert buildTools.size() == 3
    // 定义Map
    def buildYears = ["ant":2000,"maven":2009]
    // 添加元素
    buildYears << ['gradle':123]
    // 获取元素
    println buildYears.ant
    // 获取元素
    println buildYears.get("maven")
    // 默认类型是LinkedHashMap
    assert buildYears.getClass() == LinkedHashMap
    
  13. 闭包(简单理解)。

    // 带参数闭包
    def c1 = {
        v ->
            println v
    }
    // 不带参数闭包
    def c2 = {
        println 'hello'
    }
    // 方法1,Closure闭包作为参数,不要导入包,导入的包是Java的
    def method1(Closure closure){
        closure('param')
    }
    // 方法2
    def method2(Closure closure){
        closure()
    }
    // 调用,传参
    method1(c1)
    method2(c2)
    
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。