groovy和java处理资源对比

2017-01-16 11:11

迭代

  • groovy用闭包的方式迭代(each),语法简明方便
list.each{}
  • java迭代较繁琐
for(ItemType item : list){
}

处理资源

  • java要加上close,为了保险起见,一般要使用try catch
  • groovy用闭包更简单,eachLine复制文件输出流的打开和关闭,能很好的避免没有处理好资源造成的泄露
new File("log.txt").eachLine{print it}

流只是处理资源的一小部分,比如数据库,图片,网络连接等用groovy能更好的处理资源,避免造成内存泄露

资源处理代码经常是难以测试的,只有通过代码覆盖率进行完整的覆盖测试,由于重复,到处分布的资源处理的测试十分困难并且耗尽前期的开发时间,测试集中的处理十分容易并且只要求一个测试。

  • 我们来看看 java 提供了什么样的资源处理,然后我们展示相应的 groovy 的解决方案。

java使用内部类解决

从 ResourceHander 中获取到的 Resource 负责构建和销毁,
// Java
interface ResourceUser {
    void use(Resource resource)
    }
    resourceHandler.handle(new ResourceUser(){
    public void use (Resource resource) {
        resource.doSomething()
        }
    })

看看groovy等价处理方式
代码则显示了所有必须的信息,并且没有多余的无用代码:

resourceHandler.handle { resource -> resource.doSomething() }