Посилання на Метод у Java
Перш ніж перейти до практики з Stream API, слід розглянути деякі скорочення для лямбда-виразів. Програмісти називають ці «скорочення» синтаксичним цукром.
У цьому розділі буде розглянуто посилання на методи та їх використання як замінників лямбда-виразів.
Посилання на методи
Розглянемо простий приклад лямбда-виразу та спробуємо замінити його на посилання на метод:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Використання двох лямбда-виразів виглядає не надто елегантно, особливо коли їх можна скоротити до посилань на методи з класів, у яких вони оголошені.
Синтаксис виглядатиме так:
Example.java
1(Class::Method)
Покращимо наведений вище код, використовуючи посилання на методи:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
Метод toUpperCase є частиною класу String, тому використовується конструкція String::toUpperCase. Зверніть увагу, що при використанні посилання на метод операція буде застосована до кожного елемента, тому немає потреби використовувати для цього лямбда-вираз. Також ми замінили виведення на екран на System.out::print, що також є посиланням на метод. Програма застосує метод System.out.print() до кожного елемента.
До речі, IntelliJ IDEA постійно пропонує замінювати лямбда-вирази на посилання на методи, якщо це можливо, тому не потрібно щоразу запам'ятовувати цей синтаксис.
Таким чином, IntelliJ IDEA сама запропонує покращити ваш код за допомогою посилань на методи.
Підсумок
Отже, посилання на методи не створюють додаткового програмного навантаження. Вони не оптимізують процес, але й не ускладнюють його. Ця конструкція призначена лише для невеликого скорочення коду та покращення читабельності. Використовувати лямбда-вирази чи посилання на методи — вирішувати вам. Наприклад, мені зручніше написати лямбда-вираз, а IntelliJ потім автоматично замінить його на посилання на метод.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 4
Посилання на Метод у Java
Свайпніть щоб показати меню
Перш ніж перейти до практики з Stream API, слід розглянути деякі скорочення для лямбда-виразів. Програмісти називають ці «скорочення» синтаксичним цукром.
У цьому розділі буде розглянуто посилання на методи та їх використання як замінників лямбда-виразів.
Посилання на методи
Розглянемо простий приклад лямбда-виразу та спробуємо замінити його на посилання на метод:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(e -> e.toUpperCase()).forEach(e -> System.out.print(e)); } }
Використання двох лямбда-виразів виглядає не надто елегантно, особливо коли їх можна скоротити до посилань на методи з класів, у яких вони оголошені.
Синтаксис виглядатиме так:
Example.java
1(Class::Method)
Покращимо наведений вище код, використовуючи посилання на методи:
Main.java
1234567891011package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> example = Arrays.asList("c", "o", "d", "e", "f", "i", "n", "i", "t", "y"); example.stream().map(String::toUpperCase).forEach(System.out::print); } }
Метод toUpperCase є частиною класу String, тому використовується конструкція String::toUpperCase. Зверніть увагу, що при використанні посилання на метод операція буде застосована до кожного елемента, тому немає потреби використовувати для цього лямбда-вираз. Також ми замінили виведення на екран на System.out::print, що також є посиланням на метод. Програма застосує метод System.out.print() до кожного елемента.
До речі, IntelliJ IDEA постійно пропонує замінювати лямбда-вирази на посилання на методи, якщо це можливо, тому не потрібно щоразу запам'ятовувати цей синтаксис.
Таким чином, IntelliJ IDEA сама запропонує покращити ваш код за допомогою посилань на методи.
Підсумок
Отже, посилання на методи не створюють додаткового програмного навантаження. Вони не оптимізують процес, але й не ускладнюють його. Ця конструкція призначена лише для невеликого скорочення коду та покращення читабельності. Використовувати лямбда-вирази чи посилання на методи — вирішувати вам. Наприклад, мені зручніше написати лямбда-вираз, а IntelliJ потім автоматично замінить його на посилання на метод.
Дякуємо за ваш відгук!