tgoop.com/javapro_ir/4419
Create:
Last Update:
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