Начиная с Apache Groovy 2.6 (последняя версия 2.6.0-альфа-2 на 16 ноября 2017 года), он может использовать синтаксис лямбда из Java 8 и попробовать с ресурсами из Java7. Самые крутые приложения уже любят эти функции.(Закрытие) Но адаптация к синтаксису Java действительно важна для разработчиков Java, которые еще не используют Apache Groovy.
Установите Apache Groovy, затем измените имя файла с Foo.java
в Foo.groovy
и выполнить просто groovy Foo.groovy
. Разработчик Java снова равен разработчику Apache Groovy, начиная с Apache Groovy 2.6.
Но эти функции еще не являются стандартными для Apache Groovy. Apache Groovy 2.6 поддерживает опционально, Apache Groovy 3 поддерживает по умолчанию. Apache Groovy 2.6 все еще находится в альфа-фазе. но он уже вышел. мы можем это проверить!
Установите через sdkman. Apache Groovy 2.6 еще не поддерживает синтаксис Java8 по умолчанию Должна быть указана опция -Dgroovy.antlr4=true
при выполнении groovy.
[koji:~]$ sdk install groovy 2.6.0-alpha-2 [koji:~]$ sdk use groovy 2.6.0-alpha-2 # to activate Java7/9 syntax. [koji:~]$ groovyConsole -Dgroovy.antlr4=true& # of course you can JAVA_OPTS. [koji:~]$ echo $JAVA_OPTS [koji:~]$ export JAVA_OPTS="-Dgroovy.antlr4=true" [koji:~]$ echo $JAVA_OPTS -Dgroovy.antlr4=true [koji:~]$ groovyConsole&
def file = new File("/tmp/test.txt") /* def fileReader = file.newReader() println fileReader.ready() fileReader.close() println fileReader.ready() // java.io.IOException: Stream closed. of ocurse :) */ // try-with-resources ! Since Apache Groovy 2.6 can use! try(BufferedReader br = file.newReader()) { br.eachLine { println it } } catch(Exception e) { println e } // Normal Groovy way! file.withReader {BufferedReader br -> br.eachLine { println it } }
// Lamda syntax is available! java.util.function.Functiontest = (i) -> {"${i} !?"} assert "123 !?" == test.apply(123) // Lambda with streams. List list = [1,2,3,4,5] assert [10, 8, 6, 4, 2] == list.stream().map((a) -> {a * 2}).sorted((a, b) -> { return b - a; }).collect() // Normal Groovy way! assert [10, 8, 6, 4, 2] == list.collect{it * 2}.sort{a,b -> b <=> a}
Мне нравится заводной стиль больше, чем Java. Но этот новый синтаксический анализатор действительно полезен для разработчиков Java, изучающих Apache Groovy.
Оригинал: “https://dev.to/saba1024/apache-groovy-with-java-7-and-8-syntaxs-i5”