Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Посилання на Метод у Java | Розширені Можливості та Техніки Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Структури Даних Java

bookПосилання на Метод у Java

Перш ніж перейти до практики з Stream API, слід розглянути деякі скорочення для лямбда-виразів. Програмісти називають ці «скорочення» синтаксичним цукром.

У цьому розділі буде розглянуто посилання на методи та їх використання як замінників лямбда-виразів.

Посилання на методи

Розглянемо простий приклад лямбда-виразу та спробуємо замінити його на посилання на метод:

Main.java

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Покращимо наведений вище код, використовуючи посилання на методи:

Main.java

Main.java

copy
1234567891011
package 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 потім автоматично замінить його на посилання на метод.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookПосилання на Метод у Java

Свайпніть щоб показати меню

Перш ніж перейти до практики з Stream API, слід розглянути деякі скорочення для лямбда-виразів. Програмісти називають ці «скорочення» синтаксичним цукром.

У цьому розділі буде розглянуто посилання на методи та їх використання як замінників лямбда-виразів.

Посилання на методи

Розглянемо простий приклад лямбда-виразу та спробуємо замінити його на посилання на метод:

Main.java

Main.java

copy
1234567891011
package 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

Example.java

copy
1
(Class::Method)

Покращимо наведений вище код, використовуючи посилання на методи:

Main.java

Main.java

copy
1234567891011
package 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 потім автоматично замінить його на посилання на метод.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 4
some-alt