Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Постачальник: Генерація Даних | Основи Та Функціональні Можливості Stream API
Stream API

bookПостачальник: Генерація Даних

Ось як реалізується функціональний інтерфейс Supplier:

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

Основне призначення методу get()повертати об'єкт типу T без прийому жодних параметрів.

Практичне використання Supplier

Supplier часто використовується у випадках, коли необхідно генерувати дані за запитом. Це може бути корисно для лінивої ініціалізації, генерування випадкових значень або отримання значень із зовнішнього джерела.

Створимо систему, яка генерує випадкові паролі. Використовуючи функціональний інтерфейс Supplier, можна легко організувати генерування паролів на вимогу.

Main.java

Main.java

copy
123456789101112131415161718192021222324
package com.example; import java.util.Random; import java.util.function.Supplier; public class Main { public static void main(String[] args) { // Supplier for generating random passwords Supplier<String> passwordSupplier = () -> { String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; StringBuilder password = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 12; i++) { int index = random.nextInt(characters.length()); password.append(characters.charAt(index)); } return password.toString(); }; // Generate and print the random password String generatedPassword = passwordSupplier.get(); System.out.println("Generated password: " + generatedPassword); } }

Ви створюєте Supplier, який генерує випадковий пароль з 12 символів. Лямбда-вираз всередині Supplier використовує клас Random для вибору випадкових символів із рядка.

Метод get() запускає цю логіку генерації пароля лише за потреби, забезпечуючи ліниве створення значень.

Ліниве створення

Спочатку ви створюєте Supplier, але код всередині нього не виконується одразу. Це є важливою особливістю. Замість негайного виконання певної логіки (наприклад, генерації пароля), ви просто записуєте її всередині Supplier як інструкцію для виконання пізніше, коли це буде потрібно.

Supplier<String> passwordSupplier = () -> {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
    StringBuilder password = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 12; i++) {
        int index = random.nextInt(characters.length());
        password.append(characters.charAt(index));
    }
    return password.toString();
};

У цьому прикладі код всередині Supplier (генерація пароля) не виконується одразу. Натомість ви визначаєте: «Коли буде запит, ось як буде згенеровано пароль.» Тепер, коли ви викликаєте get() у цього Supplier:

String generatedPassword = passwordSupplier.get();

Тільки тоді виконується код всередині Supplier, і генерується пароль. Це називається ліниве виконання.

Основні обов'язки

1. Яке призначення інтерфейсу Supplier у Java?

2. Що відбудеться, якщо викликати метод get() двічі для одного й того ж об'єкта Supplier?

question mark

Яке призначення інтерфейсу Supplier у Java?

Select the correct answer

question mark

Що відбудеться, якщо викликати метод get() двічі для одного й того ж об'єкта Supplier?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 2.33

bookПостачальник: Генерація Даних

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

Ось як реалізується функціональний інтерфейс Supplier:

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

Основне призначення методу get()повертати об'єкт типу T без прийому жодних параметрів.

Практичне використання Supplier

Supplier часто використовується у випадках, коли необхідно генерувати дані за запитом. Це може бути корисно для лінивої ініціалізації, генерування випадкових значень або отримання значень із зовнішнього джерела.

Створимо систему, яка генерує випадкові паролі. Використовуючи функціональний інтерфейс Supplier, можна легко організувати генерування паролів на вимогу.

Main.java

Main.java

copy
123456789101112131415161718192021222324
package com.example; import java.util.Random; import java.util.function.Supplier; public class Main { public static void main(String[] args) { // Supplier for generating random passwords Supplier<String> passwordSupplier = () -> { String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; StringBuilder password = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 12; i++) { int index = random.nextInt(characters.length()); password.append(characters.charAt(index)); } return password.toString(); }; // Generate and print the random password String generatedPassword = passwordSupplier.get(); System.out.println("Generated password: " + generatedPassword); } }

Ви створюєте Supplier, який генерує випадковий пароль з 12 символів. Лямбда-вираз всередині Supplier використовує клас Random для вибору випадкових символів із рядка.

Метод get() запускає цю логіку генерації пароля лише за потреби, забезпечуючи ліниве створення значень.

Ліниве створення

Спочатку ви створюєте Supplier, але код всередині нього не виконується одразу. Це є важливою особливістю. Замість негайного виконання певної логіки (наприклад, генерації пароля), ви просто записуєте її всередині Supplier як інструкцію для виконання пізніше, коли це буде потрібно.

Supplier<String> passwordSupplier = () -> {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
    StringBuilder password = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 12; i++) {
        int index = random.nextInt(characters.length());
        password.append(characters.charAt(index));
    }
    return password.toString();
};

У цьому прикладі код всередині Supplier (генерація пароля) не виконується одразу. Натомість ви визначаєте: «Коли буде запит, ось як буде згенеровано пароль.» Тепер, коли ви викликаєте get() у цього Supplier:

String generatedPassword = passwordSupplier.get();

Тільки тоді виконується код всередині Supplier, і генерується пароль. Це називається ліниве виконання.

Основні обов'язки

1. Яке призначення інтерфейсу Supplier у Java?

2. Що відбудеться, якщо викликати метод get() двічі для одного й того ж об'єкта Supplier?

question mark

Яке призначення інтерфейсу Supplier у Java?

Select the correct answer

question mark

Що відбудеться, якщо викликати метод get() двічі для одного й того ж об'єкта Supplier?

Select the correct answer

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

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

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

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