Groovy по сравнению с несоответствием синтаксиса Java

В Java я могу это сделать:

return a
    && b
    && c;

В Groovy он возвращает ошибку компиляции: unexpected token: &&. Это также происходит, если я опускаю ключевое слово return в Groovy. Однако, если я заключу оператор в круглые скобки, он отлично работает.

Во всех ресурсах Groovy, которые я прочитал, мне сказали, что я должен писать "прямую Java" везде, где захочу. Это ошибка? Если нет, в чем причина этого дизайнерского решения?

Я посмотрел здесь, но не нашел эту проблему в списке. Я понимаю, что есть некоторые вещи, которые нельзя унаследовать от Java, но это не похоже на одну из этих вещей.

Ответ 1

Проблема в том, что Groovy не требует явных терминаторов строк, а return a сам по себе выглядит как действительный оператор. Вы можете использовать:

return a &&
       b &&
       c;

Или используйте продолжение строки:

return a \
    && b \
    && c;

Неверно, что все Java действительно Groovy. Хотя большинство синтаксиса Java охвачены, иногда функция Groovy будет влиять на действительную Java.

Ответ 2

Groovy, похоже, не требует точки с запятой, поэтому я думаю, что ваш код задается так:

return a;
    && b;
    && c;

Из документация:

Groovy использует аналогичный синтаксис для Java, хотя в Groovy точки с запятой являются необязательными.

Это позволяет немного печатать, но также делает код более чистым (что удивительно для таких незначительных изменений). Таким образом, обычно , если один оператор находится в каждой строке, вы можете полностью исключить точки с запятой - хотя его проблема не стоит использовать, если вы хотите. Если вы хотите поместить несколько операторов в строку, используйте точку с запятой для разделения операторов.

Ответ 3

вы можете сделать почти все java в groovy, за исключением того, что вы смотрите на следующее.

http://groovy.codehaus.org/Differences+from+Java

если вы хотите сделать прямую java, тогда вы можете сделать это в классе *.java и перенести его в папку src.