java - 面向 Java 开发人员的 Groovy 迁移

标签 java groovy

<分区>

我从事 Java 开发已有多年。最近,Groovy 引起了广泛关注。我检查了一下,它看起来很有趣,但我没有看到它有任何内在的“令人惊叹的因素”;意思是,我看不出有任何内在值(value)可以开始开发它。

现在,我肯定我只是没有在这里看到森林。所以,我问整个 SO 社区:学习 Groovy 对任何 Java 开发人员有什么好处?什么特性/功能/等。它比普通的 Java 做得好(或做得更好)吗?

软件世界中的事物不会无缘无故地像野火一样火爆。我确信 Groovy 具有各种漂亮的小(和大)功能,这使它成为必须知道的;我只是没有“得到”它。提前致谢。

最佳答案

在我看来,Groovy 相对于 Java 的一些最大的冒险是:

  • 得益于重载运算符和简化的属性访问,代码更简洁。而不是写

    if (obj1.getBar().equals(obj2.getBaz())) { 
        obj3.setFoo("equal");
    }
    

    你可以写

    if (obj1.bar == obj2.baz) {
        obj3.foo = "equal"
    }
    

我认为它更具可读性。

  • map 和列表的内嵌符号。而不是

    Map attributes = new HashMap();
    attributes.put("color", "red");
    attributes.put("width", 1);
    

你可以写

    def attributes = [color: "red", width: 1]
  • 对标准库的有用扩展。例如,您可以这样读取文件和网页:

    def fileContents = new File('readme.txt').text
    def pageContents = new URL('readme.txt').text
    
  • 用于初始化属性的语法糖 - 例如,

    MyClass myObject = new MyClass();
    myObject.setFoo("bar");
    myObject.setBaz(23);
    

可以替换为

    def myObject = new MyClass(foo: "bar", baz: 23)
  • “安全”取消引用 - if (str != null) {return str.toUppercase();} else {return null;} 变为 return str?.toUppercase( )

  • 正则表达式看起来更好

  • 闭包允许您以“函数式”风格编写代码,并使编写事件监听器之类的东西变得更加容易

关于java - 面向 Java 开发人员的 Groovy 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7840989/

相关文章:

java - Solr 3.6.1 API 中的分组 Solr 结果在解析结果时导致 NullPointerException

java - 接收 JMeter 需要 saveservice 属性文件才能继续错误

java - 选择sqlite android

amazon-web-services - 查询 AWS CLI 以填充 Jenkins "Active Choices Reactive Parameter"(Linux)

grails - 使用 webflow 和 grails 创建动态表

unit-testing - 什么时候 Spock 的 @Shared 注释应该比静态字段更受欢迎?

grails - 您可以从Grails 2应用程序登录到第三方服务吗?

java - Spring Autowiring 仅扫描测试文件

java - Jasper 报告生成的 pdf 的下载选项在浏览器中不起作用

java - 替换groovy中的大字符串