Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
⌨️ Лямбда-выражения и свой кастомный функциональный интерфейс

Для того что бы определить лямбда-выражение, нам нужен функциональный интерфейс. Изобретём свой:

@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}

Функциональный интерфейс MathOperation содержит один абстрактный метод operate, который принимает два значения типа int и возвращает int. Аннотация @FunctionalInterface указывает на то, что интерфейс предназначен для использования в функциональном программировании и должен содержать только один абстрактный метод. Но аннотация не обязательна.

Использование лямбда-выражения:

public class LambdaExample {
public static void main(String[] args) {
// Реализация интерфейса с помощью лямбда-выражения
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> a - b;
MathOperation multiplication = (a, b) -> a * b;
MathOperation division = (a, b) -> a / b;

int x = 10;
int y = 5;

System.out.println("Addition: " + operate(x, y, addition)); // 15
System.out.println("Subtraction: " + operate(x, y, subtraction)); // 5
System.out.println("Multiplication: " + operate(x, y, multiplication)); // 50
System.out.println("Division: " + operate(x, y, division)); // 2
}

// Метод, принимающий MathOperation и применяющий его к данным
private static int operate(int a, int b, MathOperation operation) {
return operation.operate(a, b);
}
}


В нашем примере лямбда-выражения используются для создания экземпляров интерфейса MathOperation для выполнения различных математических операций (сложение, вычитание и т.д.).

Метод operate принимает два целых числа и функциональный интерфейс MathOperation, затем выполняет переданную операцию. В метод в третьем параметре можно передать непосредственно лямбда-выражение, не используя промежуточную переменную.

#java #lambda #FunctionalInterface
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍19❤‍🔥21
⌨️ Functional Interfaces (Функциональные интерфейсы)

Функциональные интерфейсы — это интерфейсы, которые содержат только один абстрактный метод. Они используются как целевые типы для лямбда-выражений и позволяют передавать функциональность в виде параметров. В Java 8 было добавлено несколько встроенных функциональных интерфейсов, таких как Predicate, Consumer, Supplier, и Function.

Пример функционального интерфейса:

@FunctionalInterface
interface MyFunctionalInterface {
void printMessage(String message);
}


Теперь, используя лямбда-выражение, мы можем легко реализовать этот интерфейс:

MyFunctionalInterface printer = message -> System.out.println(message);
printer.printMessage("Hello, World!"); // Hello, World!


Java включает несколько предопределенных функциональных интерфейсов, например:

✔️ Predicate<T> — принимает объект типа T и возвращает boolean.

✔️ Consumer<T> — принимает объект типа T и ничего не возвращает.

✔️ Supplier<T> — ничего не принимает, но возвращает объект типа T.

✔️ Function<T, R> — принимает объект типа T и возвращает объект типа R.

Использование функциональных интерфейсов позволяет создавать гибкий и лаконичный код.

#java #FunctionalInterface
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍1
⚙️ Что такое функциональный интерфейс?

Функциональный интерфейс — это интерфейс, содержащий ровно один абстрактный метод. В Java 8 и выше они активно используются для работы с лямбда-выражениями и потоками (Stream API).

Пример:
@FunctionalInterface
interface MyFunctionalInterface {
void execute();
}

public class Main {
public static void main(String[] args) {
MyFunctionalInterface task = () -> System.out.println("Hello, Functional Interface!");
task.execute();
}
}


✔️ Особенности:

1️⃣ Интерфейс с аннотацией @FunctionalInterface может содержать только один абстрактный метод.
2️⃣ Можно добавлять default или static методы без ограничения их количества.

💡 Совет: Используйте функциональные интерфейсы для создания компактного и чистого кода с лямбда-выражениями.

#java #functionalinterface #lambda
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥2
⌨️ Лямбда-выражения и свой кастомный функциональный интерфейс

Для того что бы определить лямбда-выражение, нам нужен функциональный интерфейс. Изобретём свой:

@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}

Функциональный интерфейс MathOperation содержит один абстрактный метод operate, который принимает два значения типа int и возвращает int. Аннотация @FunctionalInterface указывает на то, что интерфейс предназначен для использования в функциональном программировании и должен содержать только один абстрактный метод. Но аннотация не обязательна.

Использование лямбда-выражения:

public class LambdaExample {
public static void main(String[] args) {
// Реализация интерфейса с помощью лямбда-выражения
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> a - b;
MathOperation multiplication = (a, b) -> a * b;
MathOperation division = (a, b) -> a / b;

int x = 10;
int y = 5;

System.out.println("Addition: " + operate(x, y, addition)); // 15
System.out.println("Subtraction: " + operate(x, y, subtraction)); // 5
System.out.println("Multiplication: " + operate(x, y, multiplication)); // 50
System.out.println("Division: " + operate(x, y, division)); // 2
}

// Метод, принимающий MathOperation и применяющий его к данным
private static int operate(int a, int b, MathOperation operation) {
return operation.operate(a, b);
}
}


В нашем примере лямбда-выражения используются для создания экземпляров интерфейса MathOperation для выполнения различных математических операций (сложение, вычитание и т.д.).

Метод operate принимает два целых числа и функциональный интерфейс MathOperation, затем выполняет переданную операцию. В метод в третьем параметре можно передать непосредственно лямбда-выражение, не используя промежуточную переменную.

#java #lambda #FunctionalInterface
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123