Supplier Functional Interface
Supplier কী?
Supplier হলো Java-এর একটি Functional Interface, যা কোনো ইনপুট নেয় না, কিন্তু একটি মান (value) সরবরাহ করে।
সহজ কথায়:
Supplier = No Input → Output
উদাহরণ:
- নতুন অবজেক্ট তৈরি করা
- Default value দেওয়া
- Lazy initialization
- Random value generate করা
Supplier Interface-এর গঠন
@FunctionalInterface
public interface Supplier<T> {
T get();
}
এখানে:
- কোনো parameter নেই
get()মেথড একটি value রিটার্ন করে
Supplier কেন দরকার?
যখন:
- মান দরকার, কিন্তু input নেই
- Object তৈরি delayed (lazy) করতে চান
- Default বা fallback value দিতে চান
সহজ Supplier উদাহরণ
বর্তমান সময় দেওয়া
Supplier<LocalDateTime> now =
LocalDateTime::now;
System.out.println(now.get());
Object তৈরি করতে Supplier
Supplier<User> userSupplier =
() -> new User("Rahim", 30);
User user = userSupplier.get();
Stream-এর সাথে Supplier ব্যবহার
generate() দিয়ে Stream তৈরি
Stream.generate(() -> Math.random())
.limit(5)
.forEach(System.out::println);
এখানে Lambda আসলে একটি Supplier
Lazy Initialization উদাহরণ
Supplier<ExpensiveObject> supplier =
() -> new ExpensiveObject();
if (needObject) {
ExpensiveObject obj = supplier.get();
}
object তখনই তৈরি হবে যখন দরকার হবে
Default Value দিতে Supplier
String value = Optional.ofNullable(input)
.orElseGet(() -> "DEFAULT");
orElseGet() একটি Supplier নেয়
Primitive Supplier (পারফরম্যান্স ভালো)
- IntSupplier
- LongSupplier
- DoubleSupplier
- BooleanSupplier
উদাহরণ
IntSupplier randomInt =
() -> new Random().nextInt(100);
System.out.println(randomInt.getAsInt());
Supplier বনাম Consumer
| Supplier | Consumer |
|---|---|
| Input নেই | Input আছে |
| Output দেয় | Output নেই |
| Data produce | Data consume |
বাস্তব Spring Boot উদাহরণ
Supplier<UUID> uuidSupplier = UUID::randomUUID;
Order order = new Order();
order.setId(uuidSupplier.get());
Supplier chaining আছে কি?
❌ নেই
👉 কারণ Supplier কোনো input নেয় না
✔ chaining দরকার হলে Function ব্যবহার করুন