Почему этот оператор Groovy MetaClass работает с Sql классом? - PullRequest
0 голосов
/ 16 января 2011

Почему эта строка кода модульного теста работает?groovy.sql.Sql не имеет конструктора без аргументов.

Sql.metaClass.constructor = { dataSource -> return new Sql(); }

Эта строка среди других в приложении grails, которое моделирует конструктор объекта Sql и один из его методов.Это прекрасно работает.

Глядя на API для объекта Sql, я не вижу конструктора без аргументов: http://groovy.codehaus.org/api/groovy/sql/Sql.html

Этот стиль переопределения конструктора с использованием Sql.metaClass.constructorчто-то я нашел по адресу: http://manuel -palacio.blogspot.com / 2010/07 / groovy-tip-metaprogramming-1.html

Спасибо!

1 Ответ

1 голос
/ 17 января 2011

groovy.sql.Sql не имеет общедоступного конструктора без аргументов, но , как видно из исходного кода , у него есть закрытый конструктор без аргументов - я думаю, для поддержки синтаксиса new Sql(connection: connection)?.

Я немного удивлен тем, что этот метод для заглушения не генерирует исключение, например, при запуске sql.execute или тому подобном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...