JAVAPRO_IR Telegram 4419
✍️ آشنایی با Functional Interfaces در جاوا

یکی از قابلیت‌های قدرتمند جاوا 8، معرفی Functional Interfaces است. اینترفیس‌هایی که فقط یک متد انتزاعی دارند (SAM – Single Abstract Method) و می‌توان از آن‌ها به صورت مستقیم با Lambda Expressions یا Method References استفاده کرد.

سه اینترفیس بسیار پرکاربرد در جاوا عبارتند از:

* Predicate<T>:
ورودی می‌گیرد و یک boolean برمی‌گرداند.
* Function\<T, R>:
ورودی می‌گیرد و خروجی از نوع دیگر برمی‌گرداند.
* Consumer<T>:
ورودی می‌گیرد ولی خروجی ندارد (برای انجام عملی روی داده).


🔹 ۱. استفاده از Predicate
مثالی ساده برای بررسی شرط روی داده‌ها:


import java.util.function.Predicate;

public class Main {
public static void main(String[] args) {
Predicate<String> isLong = s -> s.length() > 5;

System.out.println(isLong.test("Hello")); // false
System.out.println(isLong.test("FunctionalInterface")); // true
}
}


در اینجا با استفاده از Predicate بررسی کردیم که طول یک رشته بیشتر از ۵ هست یا خیر.


🔹 ۲. استفاده از Function
تبدیل یک ورودی به خروجی متفاوت:


import java.util.function.Function;

public class Main {
public static void main(String[] args) {
Function<String, Integer> stringLength = s -> s.length();

System.out.println(stringLength.apply("Java")); // 4
System.out.println(stringLength.apply("LambdaExpr")); // 10
}
}


اینجا رشته ورودی را گرفتیم و طول آن را به صورت عدد برگرداندیم.


🔹 ۳. استفاده از Consumer
اجرای عملی روی داده بدون بازگرداندن خروجی:


import java.util.function.Consumer;

public class Main {
public static void main(String[] args) {
Consumer<String> printer = s -> System.out.println("Hello, " + s);

printer.accept("Ali"); // Hello, Ali
printer.accept("Sara"); // Hello, Sara
}
}


در این مثال، هر رشته‌ای که به Consumer بدهیم، چاپ می‌شود.


🔹 ۴. ترکیب آن‌ها
گاهی لازم است چند اینترفیس را با هم ترکیب کنیم:


import java.util.function.*;

public class Main {
public static void main(String[] args) {
Predicate<Integer> isEven = n -> n % 2 == 0;
Function<Integer, String> toString = n -> "عدد شما: " + n;
Consumer<String> show = s -> System.out.println(s);

int number = 8;
if (isEven.test(number)) {
String result = toString.apply(number);
show.accept(result); // خروجی: عدد شما: 8
}
}
}



نتیجه‌گیری:
استفاده از Functional Interfaces باعث می‌شود کدهای ما مختصرتر، قابل‌خواندن‌تر و قابل‌استفاده مجدد شوند. اینترفیس‌هایی مثل Predicate، Function و Consumer پایه و اساس Stream API در جاوا هستند و فهم درست آن‌ها برای برنامه‌نویسی مدرن در جاوا ضروری است.

#کاربرـپیشرفته


🆔 @javapro_ir
🆔 @group_javapro
👍53



tgoop.com/javapro_ir/4419
Create:
Last Update:

✍️ آشنایی با Functional Interfaces در جاوا

یکی از قابلیت‌های قدرتمند جاوا 8، معرفی Functional Interfaces است. اینترفیس‌هایی که فقط یک متد انتزاعی دارند (SAM – Single Abstract Method) و می‌توان از آن‌ها به صورت مستقیم با Lambda Expressions یا Method References استفاده کرد.

سه اینترفیس بسیار پرکاربرد در جاوا عبارتند از:

* Predicate<T>:
ورودی می‌گیرد و یک boolean برمی‌گرداند.
* Function\<T, R>:
ورودی می‌گیرد و خروجی از نوع دیگر برمی‌گرداند.
* Consumer<T>:
ورودی می‌گیرد ولی خروجی ندارد (برای انجام عملی روی داده).


🔹 ۱. استفاده از Predicate
مثالی ساده برای بررسی شرط روی داده‌ها:


import java.util.function.Predicate;

public class Main {
public static void main(String[] args) {
Predicate<String> isLong = s -> s.length() > 5;

System.out.println(isLong.test("Hello")); // false
System.out.println(isLong.test("FunctionalInterface")); // true
}
}


در اینجا با استفاده از Predicate بررسی کردیم که طول یک رشته بیشتر از ۵ هست یا خیر.


🔹 ۲. استفاده از Function
تبدیل یک ورودی به خروجی متفاوت:


import java.util.function.Function;

public class Main {
public static void main(String[] args) {
Function<String, Integer> stringLength = s -> s.length();

System.out.println(stringLength.apply("Java")); // 4
System.out.println(stringLength.apply("LambdaExpr")); // 10
}
}


اینجا رشته ورودی را گرفتیم و طول آن را به صورت عدد برگرداندیم.


🔹 ۳. استفاده از Consumer
اجرای عملی روی داده بدون بازگرداندن خروجی:


import java.util.function.Consumer;

public class Main {
public static void main(String[] args) {
Consumer<String> printer = s -> System.out.println("Hello, " + s);

printer.accept("Ali"); // Hello, Ali
printer.accept("Sara"); // Hello, Sara
}
}


در این مثال، هر رشته‌ای که به Consumer بدهیم، چاپ می‌شود.


🔹 ۴. ترکیب آن‌ها
گاهی لازم است چند اینترفیس را با هم ترکیب کنیم:


import java.util.function.*;

public class Main {
public static void main(String[] args) {
Predicate<Integer> isEven = n -> n % 2 == 0;
Function<Integer, String> toString = n -> "عدد شما: " + n;
Consumer<String> show = s -> System.out.println(s);

int number = 8;
if (isEven.test(number)) {
String result = toString.apply(number);
show.accept(result); // خروجی: عدد شما: 8
}
}
}



نتیجه‌گیری:
استفاده از Functional Interfaces باعث می‌شود کدهای ما مختصرتر، قابل‌خواندن‌تر و قابل‌استفاده مجدد شوند. اینترفیس‌هایی مثل Predicate، Function و Consumer پایه و اساس Stream API در جاوا هستند و فهم درست آن‌ها برای برنامه‌نویسی مدرن در جاوا ضروری است.

#کاربرـپیشرفته


🆔 @javapro_ir
🆔 @group_javapro

BY برنامه نویسی جاوا | Java


Share with your friend now:
tgoop.com/javapro_ir/4419

View MORE
Open in Telegram


Telegram News

Date: |

The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. SUCK Channel Telegram With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information.
from us


Telegram برنامه نویسی جاوا | Java
FROM American