Groovy, в чем разница? u.test != (u.test)

#groovy #metaprogramming

#groovy #метапрограммирование

Вопрос:

где разница def foo = u.test " " u.test работает нормально, где def foo = (u.test) " " (u.test) возвращает ошибку компиляции с чем-то вроде:

 unable to resolve class u.test
...
def foo = (u.test) " " (u.test)
          ^

1 error
  

В этом примере u приведен класс, написанный мной, который реализует интерфейс map.

Комментарии:

1. Может быть, потому (class) , что используется для преобразования типов.

2. какую версию Groovy вы используете?

3. @MichaelEaster 3.0.5

4. Изменил мою версию groovy на 2.5.13, теперь работает нормально

5. для меня код работает как с groovy 3.0.5, так и с 2.5.13 — может быть, вы случайно забыли первый плюс?! (u.test) " " (u.test) попытается преобразовать » » в класс u.test, что приведет к опубликованной вами ошибке

Ответ №1:

причина заключалась в том, что я не использовал groovy-all в своих зависимостях. В 2.5.13 включены некоторые классы, которые позже (3.0.5) были разделены в других пакетах.