কম্পিউটার টিউটোরিয়াল

জাভা ৯-এ Optional ক্লাসে যোগ করা নতুন মেথডগুলো

একটি Optional ক্লাস একটি কন্টেইনার প্রদান করে যেটি একটি নন-নাল ভ্যালু ধারণ করতে পারে বা নাও পারে। এই Optional ক্লাস জাভা ৮-এ চালু করা হয়েছিল কোডে সেই জায়গা কমাতে যেখানে NullPointerException জেনারেট হতে পারে। জাভা ৯-এ Optional ক্লাসে তিনটি নতুন মেথড যোগ করা হয়েছে: or(), ifPresentOrElse() এবং stream() যা আমাদের ডিফল্ট ভ্যালু হ্যান্ডেল করতে সাহায্য করে।

Optional.or()

or() মেথড জাভা ৯-এ চালু করা হয়েছে এবং এই মেথডের প্যারামিটার হলো একটি ফাংশনাল ইন্টারফেস Supplier। এই মেথড সবসময় আমাদের একটি Optional অবজেক্ট দেয় যা খালি নয়। যদি Optional অবজেক্ট খালি না হয়, তবে এটি নিজেই Optional অবজেক্ট রিটার্ন করে। অন্যথায়, এটি Supplier দ্বারা তৈরি করা একটি Optional অবজেক্ট রিটার্ন করে।

উদাহরণ

import java.io.IOException;
import java.util.Optional;

public class OptionalOrMethodTest {
    public static void main(String[] args) throws IOException {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        Optional<String> result = opt.or(() -> Optional.of("Adithya"));
        System.out.println(result);
    }
}

আউটপুট

Optional[Adithya]

Optional.ifPresentOrElse()

ifPresentOrElse() মেথড জাভা ৯-এ চালু করা হয়েছে। এটি ifPresent() মেথডের মতো কিন্তু পার্থক্য হলো আমরা একটা আরো Runnable প্যারামিটার যোগ করেছি। যদি Optional অবজেক্ট খালি হয়, তবে Runnable ইন্টারফেসের অবজেক্ট এক্সিকিউট করা যাবে।

উদাহরণ

import java.util.Optional;

public class OptionalIfPresentOrElseTest {
    public static void main(String[] args) {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        opt.ifPresentOrElse(
            x -> System.out.println(x),
            () -> System.out.println("No value"));
    }
}

আউটপুট

No value

Optional.stream()

Optional.stream() মেথড জাভা ৯ থেকে সাপোর্টেড। এই মেথড ব্যবহার করে একটি Optional অবজেক্ট থেকে নতুন স্ট্রিম অবজেক্ট তৈরি করা যায়। যদি Optional অবজেক্টে মান থাকে, তবে সেটি মান ধারণকারী স্ট্রিম অবজেক্ট রিটার্ন করে।

উদাহরণ

import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;

public class OptionalStreamMethodTest {
    public static void main(String[] args) throws IOException {
        List<Optional<String>> list = List.of(
            Optional.of("Jai"),
            Optional.empty(),
            Optional.of("Adithya"));
        Stream<String> stream = list.stream().flatMap(Optional::stream);
        stream.forEach(System.out::println);
    }
}

আউটপুট

Jai Adithya
  1. জাভা ৯-এ @Deprecated অ্যানোটেশনের উন্নতি

  2. জাভাতে Cursor ক্লাসের গুরুত্ব

  3. জাভাতে Throwable ক্লাস এবং এর মেথডগুলোর গুরুত্ব কী?

  4. জাভাতে ক্লাসের বিভিন্ন প্রকার কী কী?