Optional কি এবং কেন প্রয়োজন?

Java Technologies - জাভা ইউটিল.প্যাকেজ (Java.util Package) - ava.util.Optional
278

Optional হল Java 8-এ পরিচিত একটি নতুন ক্লাস, যা java.util প্যাকেজের অংশ। এটি মূলত null মানের বিকল্প হিসেবে ব্যবহৃত হয় এবং এটি null safety নিশ্চিত করতে সহায়তা করে। সাধারণত, Java-তে null pointer exception (NPE) খুবই সাধারণ সমস্যা, যেখানে আপনি এমন কোনো অবজেক্ট অ্যাক্সেস করার চেষ্টা করেন যা null হয়ে থাকে। Optional ক্লাসটি এই সমস্যাটি মোকাবেলা করতে সাহায্য করে এবং কোডে আরও নিরাপত্তা যোগ করে।

Optional ক্লাসের বৈশিষ্ট্য:

  1. Null Safety:
    • Optional ক্লাস মূলত এমন পরিস্থিতি মোকাবেলা করতে ব্যবহৃত হয় যেখানে কোনো মান থাকতে পারে অথবা না-ও থাকতে পারে। এটি null মানের পরিবর্তে একটি Optional.empty() অবজেক্ট ফেরত দেয়, যা পরবর্তীতে কোন null pointer exception তৈরি করতে বাধা দেয়।
  2. Fluent API:
    • Optional ক্লাসটি method chaining এর মাধ্যমে কাজ করার সুবিধা দেয়। এর মাধ্যমে আপনি লজিক্যালভাবে মান যাচাই করার পর, পরবর্তী অপারেশন করতে পারবেন।
  3. Functional Programming:
    • Optional ক্লাসটি functional programming ধারণার সাথে সংযুক্ত। এটি কিছু ফাংশনাল মেথড (যেমন map(), filter(), ifPresent()) সরবরাহ করে, যা কোডকে আরো সুন্দর এবং সহজ করে তোলে।

Optional ক্লাসের মূল মেথডসমূহ:

  1. of(T value):

    • এটি এমন একটি Optional অবজেক্ট তৈরি করে যা non-null মান ধারণ করে।
    Optional<String> optional = Optional.of("Hello");
    
  2. ofNullable(T value):

    • এটি একটি Optional অবজেক্ট তৈরি করে যা null অথবা non-null মান ধারণ করতে পারে। যদি মান null হয়, তবে এটি একটি Optional.empty() ফেরত দেয়।
    Optional<String> optional = Optional.ofNullable(null);
    System.out.println(optional.isPresent());  // Output: false
    
  3. empty():

    • এটি একটি খালি Optional অবজেক্ট ফেরত দেয়।
    Optional<String> optional = Optional.empty();
    System.out.println(optional.isPresent());  // Output: false
    
  4. get():

    • এটি Optional অবজেক্ট থেকে মানটি ফেরত দেয়, তবে যদি মানটি null হয় তবে এটি NoSuchElementException ত্রুটি সৃষ্টি করবে। এটি সতর্কভাবে ব্যবহার করা উচিত, কারণ এটি unsafe
    Optional<String> optional = Optional.of("Hello");
    System.out.println(optional.get());  // Output: Hello
    
  5. isPresent():

    • এটি পরীক্ষা করে যে, Optional অবজেক্টে কোনো মান উপস্থিত আছে কিনা।
    Optional<String> optional = Optional.of("Hello");
    System.out.println(optional.isPresent());  // Output: true
    
  6. ifPresent(Consumer<? super T> action):

    • যদি Optional অবজেক্টে একটি মান উপস্থিত থাকে, তবে এটি সেই মানটি ব্যবহার করে একটি action সম্পাদন করে।
    Optional<String> optional = Optional.of("Hello");
    optional.ifPresent(s -> System.out.println(s.length()));  // Output: 5
    
  7. orElse(T other):

    • এটি যদি Optional অবজেক্টে কোনো মান থাকে, তবে সেই মান ফেরত দেয়, অন্যথায় other মান ফেরত দেয়।
    Optional<String> optional = Optional.ofNullable(null);
    String result = optional.orElse("Default Value");
    System.out.println(result);  // Output: Default Value
    
  8. orElseGet(Supplier<? extends T> other):

    • এটি orElse এর মতোই কাজ করে, তবে এখানে other একটি Supplier ফাংশন হবে, যা কোনো মান সরবরাহ করবে। এটি কার্যকর যখন মান উৎপাদন একটি expensive অপারেশন হয়।
    Optional<String> optional = Optional.ofNullable(null);
    String result = optional.orElseGet(() -> "Generated Value");
    System.out.println(result);  // Output: Generated Value
    
  9. orElseThrow(Supplier<? extends X> exceptionSupplier):

    • এটি Optional এর মানটি ফেরত দেয়, কিন্তু যদি মান null হয়, তবে এটি exceptionSupplier থেকে একটি নতুন exception তৈরি করে তা থ্রো করে।
    Optional<String> optional = Optional.ofNullable(null);
    String result = optional.orElseThrow(() -> new IllegalArgumentException("Value is missing"));
    

Optional ক্লাস ব্যবহার করার উদাহরণ:

Example 1: Null Safety with Optional

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        String value = null;
        
        // Using Optional to prevent NullPointerException
        Optional<String> optionalValue = Optional.ofNullable(value);
        
        // If value is present, print it, otherwise print default message
        optionalValue.ifPresentOrElse(
            System.out::println, 
            () -> System.out.println("Value is absent")
        );
    }
}

Output:

Value is absent

Example 2: Using Optional with Map

import java.util.Optional;

public class OptionalMapExample {
    public static void main(String[] args) {
        String name = "John";
        
        // Using Optional and map to transform data
        Optional<String> optionalName = Optional.ofNullable(name);
        Optional<String> upperName = optionalName.map(String::toUpperCase);
        
        System.out.println(upperName.orElse("Name is not available"));  // Output: JOHN
    }
}

Output:

JOHN

Example 3: Chaining Optionals

import java.util.Optional;

public class OptionalChainingExample {
    public static void main(String[] args) {
        Optional<String> name = Optional.ofNullable("Alice");
        
        // Chaining multiple transformations
        String result = name
                .map(String::toUpperCase)
                .filter(n -> n.startsWith("A"))
                .orElse("Unknown");
        
        System.out.println(result);  // Output: ALICE
    }
}

Output:

ALICE

Optional এর প্রয়োজনীয়তা:

  1. Null Safety:
    • Optional ক্লাসটি মূলত null pointer exception (NPE) প্রতিরোধের জন্য ব্যবহৃত হয়। এটি null মানের পরিবর্তে একটি Optional.empty() অবজেক্ট ফেরত দেয়, যা null কে এক্সেপশন হিসেবে না নিয়ে একটি নিরাপদ বিকল্প সরবরাহ করে।
  2. Better Code Readability:
    • Optional ব্যবহার করে কোড পরিষ্কার এবং পঠনযোগ্য হয়ে ওঠে। Optional এর মাধ্যমে আপনি স্পষ্টভাবে বলছেন যে, একটি মান থাকতে পারে বা নাও থাকতে পারে, যা কোডের উদ্দেশ্য বুঝতে সহায়ক।
  3. Functional Programming:
    • Optional ফাংশনাল প্রোগ্রামিং ধারণার অংশ হিসেবে ব্যবহৃত হয়। এর মাধ্যমে map(), filter(), ifPresent() এর মতো ফাংশনাল মেথড ব্যবহার করা যায়, যা কোড আরও সংক্ষিপ্ত এবং কার্যকরী করে।
  4. Avoiding Null Checks:
    • Optional ব্যবহার করলে, null চেক করার জন্য বারবার কোড লিখতে হয় না। আপনি সরাসরি ifPresent(), orElse() ইত্যাদি মেথড ব্যবহার করে সহজে null ব্যবস্থাপনা করতে পারেন।

Optional ক্লাসটি Java-তে null এর সমস্যা মোকাবেলা করার জন্য একটি শক্তিশালী সরঞ্জাম। এটি null pointer exception প্রতিরোধ করে এবং কোডকে আরও পরিষ্কার, কার্যকরী ও নিরাপদ করে তোলে। Java 8-এ Optional ব্যবহার null safety নিশ্চিত করতে এবং কোডে functional programming প্যাটার্ন প্রয়োগ করতে সহায়ক।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...