обучающей here говорит:Groovy вызова методы Синтаксис
Метод вызовы в Groovy можно опустить скобки, если есть хотя бы один параметр, и нет никакой двусмысленности.
Это работает:
static method1(def val1)
{
"Statement.method1 : $val1"
}
def method1retval = method1 30;
println (method1retval); //Statement.method1 : 30
Но когда я добавить еще один параметр для метода:
static method1(def val1, def val2)
{
"Statement.method1 : $val1 $val2"
}
def method1retval = method1 30 "20";
println (method1retval);
Это дает ошибку
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: static Statements.method1() is applicable for argument types: (java.lang.Integer) values: [30]
Possible solutions: method1(int, java.lang.String)
Q. Так косяк I опустить круглые скобки, когда havin g более одного параметра в вызове метода?
Q. Также можно опустить скобки при вызове конструктора классов?
ohh stupid Я, но как насчет конструктора? – Mahesha999
, если вы можете назвать это «без двусмысленности», да. но с 'new ...' ни 'new A', ни' new A 1', ни 'new A 1, 2' работают. если вам нужно это для DSL, подумайте об использовании построителя. прикомандированные вызовы с одним параметром работают хорошо с отсутствием(), а строители/беглый apis вполне соответствуют этому. – cfrick
, но 'new A 1," 2 "' также не работает и нет двусмысленности, '1'' '' '' '' '' '' '' String'. Получение 'Groovy: expecting '(' или '[' после названия типа для продолжения нового выражения – Mahesha999