Groovy,在ZipOutputStream上重载<<运算符

问题描述

| 基于Google,我设法编写了一个Groovy脚本,根据需要打包了一个zip文件。
ZipOutputStream zipOutput = new ZipOutputStream(new FileOutputStream(\"${uid}.pufi\"));

ZipEntry mainentry = new ZipEntry(\'main.xml\')
zipOutput.putNextEntry(mainentry)
zipOutput << \"mainmainmain\"
zipOutput.closeEntry()

ZipEntry manifentry = new ZipEntry(\'manifest.xml\')
zipOutput.putNextEntry(manifentry)
zipOutput << new FileInputStream(options.manifest)
zipOutput.closeEntry()
它可以工作,但是我想知道Groovy如何找出在
entry << \"foobar\"
entry << new FileInputStream(..)
行上要调用的内容。正如我所见,ZipOutputStream是一个Java类,它的javadoc不包含任何方法,甚至可以使用String或InputStream参数来调用。您能解释一下它是如何工作的,并在哪里记录?我想进一步了解Groovy .. :-)     

解决方法

        Groovy向一些基本的Java类添加了其他方法,以便以更常规的方式使用它们。有关其他方法的完整概述,请参见http://groovy.codehaus.org/groovy-jdk。在您的情况下,方法
leftShift
已添加到类OutputStream。 Groovy还重载了
<<
运算符,因此它与在对象上调用方法
leftShift
相同。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...