Elvis অপারেটর কি?
Elvis অপারেটর হলো SpEL (Spring Expression Language) এর একটি বিশেষ অপারেটর, যা মূলত ?: চিহ্ন দ্বারা প্রতিনিধিত্ব করা হয়। এটি কন্ডিশনাল বা নাল চেকিং অপারেটর হিসেবে কাজ করে। Elvis অপারেটরটি একটি বিকল্প মান প্রদান করার জন্য ব্যবহৃত হয়, যখন কোনো এক্সপ্রেশন বা ভ্যালু নাল (null) হয়। এটি null-safe অপারেটর হিসেবেও পরিচিত, কারণ এটি null ভ্যালু চেক করতে সাহায্য করে এবং null থাকার পরিস্থিতিতে ডিফল্ট মান প্রদান করতে পারে।
Elvis অপারেটর if-else বা ternary অপারেটরের মতো কাজ করে, তবে এটি কম্প্যাক্ট এবং সহজভাবে একটি মান প্রদান করে যখন কোন এক্সপ্রেশন null হয়।
Elvis অপারেটরের গঠন
SpEL-এ Elvis অপারেটরের সঠিক গঠন হল:
expression ?: default_value
- expression: এখানে যেকোন এক্সপ্রেশন থাকবে, যেমন একটি ভেরিয়েবল বা মেথড কল।
- default_value: যদি প্রথম এক্সপ্রেশন null হয়, তাহলে এটি ডিফল্ট মান হিসেবে ব্যবহার হবে।
Elvis অপারেটরের উদাহরণ
উদাহরণ ১: Elvis অপারেটরের সাধারণ ব্যবহার
ধরা যাক, আমাদের কাছে একটি name ভেরিয়েবল আছে, যার মান হয়তো null হতে পারে। আমরা Elvis অপারেটর ব্যবহার করে সহজেই একটি ডিফল্ট মান প্রদান করতে পারি।
উদাহরণ:
ExpressionParser parser = new SpelExpressionParser();
// name ভেরিয়েবল
String name = null;
// Elvis অপারেটর ব্যবহার
String result = parser.parseExpression("name ?: 'Default Name'").getValue(String.class);
System.out.println(result); // Output: Default Name
এখানে, name যদি null হয়, তাহলে 'Default Name' ডিফল্ট মান হিসেবে সেট হবে।
উদাহরণ ২: Elvis অপারেটর সহ Spring Bean
SpEL ব্যবহার করে Spring Beans-এও Elvis অপারেটর প্রয়োগ করা যায়। যেমন, যদি কোনো Bean এর প্রপার্টি null হয়, তাহলে আমরা একটি ডিফল্ট মান প্রদান করতে পারি।
Employee.java (Spring Bean)
public class Employee {
private String name;
// Getter and Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Spring Bean Configuration (XML)
<bean id="employee" class="com.example.Employee">
<property name="name" value="null"/>
</bean>
Elvis Operator Example in SpEL
ExpressionParser parser = new SpelExpressionParser();
// Spring Bean Context
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Employee employee = (Employee) context.getBean("employee");
// Elvis অপারেটর ব্যবহার
String employeeName = parser.parseExpression("employee.name ?: 'Anonymous'").getValue(context, String.class);
System.out.println(employeeName); // Output: Anonymous
এখানে, employee.name যদি null হয়, তাহলে 'Anonymous' ডিফল্ট মান হিসেবে ব্যবহার হবে।
উদাহরণ ৩: Elvis অপারেটর ব্যবহার করে ফাংশনাল চেক
Elvis অপারেটর ব্যবহার করে কোনো মেথড কলের ফলাফলও চেক করা যায় এবং null না থাকলে সেটি ব্যবহার করা হয়, আর null থাকলে ডিফল্ট মান দেয়া হয়।
public class Employee {
private String name;
public String getName() {
return name;
}
public String getDisplayName() {
return name != null ? name : "No Name Available";
}
}
ExpressionParser parser = new SpelExpressionParser();
Employee employee = new Employee();
// Elvis অপারেটর ব্যবহার
String displayName = parser.parseExpression("employee.getDisplayName() ?: 'Unknown'").getValue(employee, String.class);
System.out.println(displayName); // Output: Unknown (because name is null)
এখানে, getDisplayName() মেথডের ফলাফল null হলে 'Unknown' ডিফল্ট মান হিসেবে প্রদর্শিত হবে।
Elvis অপারেটরের সুবিধা
- কমপ্যাক্ট এবং সহজ: Elvis অপারেটর খুবই সংক্ষিপ্ত এবং সহজ, যা অনেক বড় if-else বা ternary অপারেটর কোটকে প্রতিস্থাপন করতে পারে।
- null চেকিং: এটি null চেক করতে সহায়ক, বিশেষত যখন ডেটার মান নিশ্চিত করা যায় না বা তা null হতে পারে।
- ডিফল্ট মান প্রদান: null মান থাকলে ডিফল্ট মান সহজে নির্ধারণ করতে সাহায্য করে, যা কোডের পরিপূর্ণতা ও কার্যকারিতা বাড়ায়।
- নির্ভুলতা: null প্যারামিটার বা মান থাকলে কোডের মধ্যে error বা null pointer exception তৈরির সম্ভাবনা কমায়।
সারাংশ
SpEL এর Elvis অপারেটর ( ?: ) হল একটি খুবই কার্যকরী অপারেটর, যা null চেকিং এবং ডিফল্ট মান প্রদান করার জন্য ব্যবহৃত হয়। এটি কন্ডিশনাল এক্সপ্রেশন লেখার কাজ সহজ করে এবং Spring Beans বা সাধারণ Java কোডে null handling আরও নিরাপদ এবং কার্যকরী করে তোলে।