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: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. bank east asia october 20 kowloon The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins.
from us


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