DefaultGroovyMethodsSupport将抛出groovy.lang.MissingMethodException

时间:2019-05-21 10:03:31

标签: groovy

我想使用DefaultGroovyMethodsSupport中的一些方法,例如“ closeQuietly”。

示例:

FileOutputStream out = new FileOutputStream("out.txt");
out.closeQuietly(); 

这将引发异常:

捕获:groovy.lang.MissingMethodException:方法的无签名:java.io.FileOutputStream.closeQuietly()适用于参数类型:()值:[]

当我以这种方式调用它时,它将起作用:

FileOutputStream out = new FileOutputStream("out.txt");
DefaultGroovyMethods.closeQuietly(out);

为什么不能应用DefaultGroovyMethods中的方法?

1 个答案:

答案 0 :(得分:0)

您不能在closeQuietly的实例上调用FileOutputStream,因为它不是Groovy向此类(或其任何父类)添加的方法。实际上,Groovy并未向FileOutputStream添加任何方法,但确实为其OutputStream父级添加了一些方法。

使用GDK documentation查看Groovy向JDK类添加了哪些方法。

DefaultGroovyMethods.closeQuietly只是一个常规的静态方法,因此您可以.....静态地调用它,例如

FileOutputStream out = new FileOutputStream("out.txt");
DefaultGroovyMethods.closeQuietly(out);