Java Technologies Functional Interfaces Example: Java 8 এর Functional Interfaces তৈরি এবং ব্যবহার গাইড ও নোট

339

Java 8 থেকে Functional Interfaces এবং Lambda Expressions পরিচিত হয়। Functional Interface এমন একটি ইন্টারফেস যা শুধুমাত্র একটি অ্যাবস্ট্রাক্ট মেথড ডিফাইন করে। Java 8 এ, আপনি Lambda Expressions ব্যবহার করে Functional Interface এর মেথড ইমপ্লিমেন্ট করতে পারেন।

এখানে কিছু উদাহরণ দেওয়া হলো যা Functional Interface তৈরি এবং ব্যবহার দেখাবে:

১. Functional Interface তৈরি

একটি Functional Interface তৈরি করার জন্য, আপনাকে একটি ইন্টারফেস তৈরি করতে হবে এবং সেটিতে শুধুমাত্র একটি অ্যাবস্ট্রাক্ট মেথড থাকবে। Java 8 থেকে, আপনি @FunctionalInterface অ্যানোটেশন ব্যবহার করে এটি চিহ্নিত করতে পারেন, যদিও এটি ঐচ্ছিক।

@FunctionalInterface
public interface Greeting {
    void sayHello(String name); // একমাত্র অ্যাবস্ট্রাক্ট মেথড
}

২. Lambda Expression এর মাধ্যমে Functional Interface ব্যবহার

Functional Interface ব্যবহার করার সবচেয়ে ভালো উপায় হচ্ছে Lambda Expression। Lambda Expression আপনাকে ক্লাসের প্রয়োজন ছাড়াই সরাসরি মেথড ইমপ্লিমেন্ট করার সুযোগ দেয়।

public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        // Lambda Expression ব্যবহার করে Functional Interface এর মেথড ইমপ্লিমেন্ট
        Greeting greeting = (name) -> System.out.println("Hello, " + name + "!");
        
        // মেথড কল করা
        greeting.sayHello("John");
    }
}

আউটপুট:

Hello, John!

৩. Built-in Functional Interfaces ব্যবহার

Java 8 এ অনেক Built-in Functional Interface রয়েছে যা আপনাকে দ্রুত কাজ করতে সাহায্য করবে। এগুলির মধ্যে Predicate, Function, Consumer, Supplier ইত্যাদি অন্তর্ভুক্ত রয়েছে। এখানে কয়েকটি উদাহরণ দেওয়া হলো:

৪. Predicate Interface উদাহরণ

Predicate<T> একটি Functional Interface যা একটি শর্ত প্রদান করে এবং boolean মান প্রদান করে। এটি একটি ইনপুট নিয়ে তার উপর শর্ত প্রয়োগ করে।

import java.util.function.Predicate;

public class PredicateExample {
    public static void main(String[] args) {
        // Predicate Interface এর মাধ্যমে একটি শর্ত তৈরি
        Predicate<Integer> isEven = (n) -> n % 2 == 0;
        
        // শর্ত পরীক্ষা করা
        System.out.println(isEven.test(4)); // true
        System.out.println(isEven.test(7)); // false
    }
}

আউটপুট:

true
false

৫. Function Interface উদাহরণ

Function<T, R> একটি Functional Interface যা একটি ইনপুট নেয় এবং একটি আউটপুট প্রদান করে। এখানে একটি Function ব্যবহার করা হয়েছে যা নামের উপর ভিত্তি করে তার লেন্থ প্রদান করে।

import java.util.function.Function;

public class FunctionExample {
    public static void main(String[] args) {
        // Function Interface ব্যবহার করে String এর লেন্থ বের করা
        Function<String, Integer> stringLength = (str) -> str.length();
        
        // আউটপুট প্রিন্ট করা
        System.out.println(stringLength.apply("Java")); // 4
        System.out.println(stringLength.apply("Functional Interface")); // 19
    }
}

আউটপুট:

4
19

৬. Consumer Interface উদাহরণ

Consumer<T> একটি Functional Interface যা একটি ইনপুট নেয় এবং কিছু করে (কিন্তু কোন আউটপুট প্রদান করে না)। এটি সাধারণত কোন কাজ সম্পাদন করার জন্য ব্যবহৃত হয়, যেমন ডাটা প্রিন্ট করা।

import java.util.function.Consumer;

public class ConsumerExample {
    public static void main(String[] args) {
        // Consumer Interface ব্যবহার করে একটি মেসেজ প্রিন্ট করা
        Consumer<String> printMessage = (message) -> System.out.println(message);
        
        // Consumer কল করা
        printMessage.accept("Hello from Consumer!");
    }
}

আউটপুট:

Hello from Consumer!

৭. Supplier Interface উদাহরণ

Supplier<T> একটি Functional Interface যা কোন ইনপুট নেয় না, কিন্তু একটি আউটপুট প্রদান করে। এটি সাধারণত ডাটা তৈরি করার জন্য ব্যবহৃত হয়।

import java.util.function.Supplier;

public class SupplierExample {
    public static void main(String[] args) {
        // Supplier Interface ব্যবহার করে একটি ভ্যালু প্রদান করা
        Supplier<Double> randomValue = () -> Math.random();
        
        // Supplier কল করা
        System.out.println(randomValue.get()); // এটি একটি র্যান্ডম ডাবল ভ্যালু প্রদান করবে
    }
}

আউটপুট:

0.4675361892615735 (প্রতিবার আলাদা হবে)

৮. Chaining Multiple Functional Interfaces

Java 8 এ আপনি বিভিন্ন Functional Interfaces একসাথে ব্যবহার করতে পারেন এবং chaining (সংযোগ) করতে পারেন। এখানে Predicate, Function ইত্যাদি একসাথে chaining করে উদাহরণ দেওয়া হয়েছে।

import java.util.function.Function;
import java.util.function.Predicate;

public class ChainingExample {
    public static void main(String[] args) {
        // Predicate ব্যবহার করে শর্ত তৈরি করা
        Predicate<Integer> isEven = (n) -> n % 2 == 0;
        Predicate<Integer> isPositive = (n) -> n > 0;

        // Function ব্যবহার করে নামের লেন্থ বের করা
        Function<String, Integer> stringLength = (str) -> str.length();
        
        // chaining করা
        String name = "Java";
        boolean result = isEven.test(stringLength.apply(name)); // stringLength -> isEven
        System.out.println("Is the length of '" + name + "' even? " + result);
        
        int number = 4;
        boolean isValid = isPositive.and(isEven).test(number); // isPositive -> isEven
        System.out.println("Is the number " + number + " positive and even? " + isValid);
    }
}

আউটপুট:

Is the length of 'Java' even? true
Is the number 4 positive and even? true

সারাংশ:

  • Functional Interfaces হল এমন ইন্টারফেস যেগুলির মধ্যে শুধুমাত্র একটি অ্যাবস্ট্রাক্ট মেথড থাকে।
  • Java 8 এ Lambda Expressions এর মাধ্যমে আপনি Functional Interfaces ব্যবহার করে কোড সহজ এবং সংক্ষিপ্তভাবে লিখতে পারেন।
  • Java 8-এর Built-in Functional Interfaces যেমন Predicate, Function, Consumer, Supplier প্রভৃতি আপনাকে অনেক সাধারণ কাজ করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...