DefaultGroovyMethodsSupport будет генерировать groovy.lang.MissingMethodException - PullRequest
0 голосов
/ 21 мая 2019

Я хочу использовать некоторые методы из 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 Ответ

1 голос
/ 21 мая 2019

Вы не можете вызвать closeQuietly для экземпляра FileOutputStream, потому что это не метод, добавленный Groovy в этот класс (или любого из его родителей).На самом деле Groovy не добавляет никаких методов к FileOutputStream, но добавляет некоторые к своему OutputStream родительскому.

Используйте документацию GDK , чтобы увидеть, какие методы добавляютсяGroovy для классов JDK.

DefaultGroovyMethods.closeQuietly - это обычный статический метод, поэтому его можно вызывать ..... статически, например,

FileOutputStream out = new FileOutputStream("out.txt");
DefaultGroovyMethods.closeQuietly(out);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...