Недавно на сайте OpenJDK появился новый черновик JEP, в котором предлагается позволить в Java писать методы в более компактной форме. Сейчас в Java для объявления методов есть только одна форма, в которой даже для простейших методов приходится писать фигурные скобки и ключевое слово return
:
int length(String s) { return s.length(); }
Компактная форма будет существенно короче:
int length(String s) -> s.length();
Кроме того, если методы являются просто обёртками над существующими методами, то предлагается также ещё форма через ссылку на метод:
int length(String s) = String::length;
Таким образом, новые компактные тела методов будут полностью аналогичны лямбда выражениям в Java, у которых тоже есть две формы: через оператор ->
и через ссылку на метод.
Если этот JEP будет реализован, то это позволит в будущем писать более короткий и читаемый Java-код без лишнего шума, особенно в ситуациях, когда в проекте много классов с большим количеством геттеров и сеттеров.
Компактные тела методов уже существуют во многих языках, например, C#, Kotlin, Scala. Примечательно, что в C# с помощью краткой формы можно писать не только методы, но и конструкторы. Однако Java-proposal специфицирует, что данная форма будет доступна только для методов.