একবার final ভেরিয়েবল ইনিশিয়ালাইজ করলে আপনি এর মান আরও মডিফাই করতে পারবেন না। অর্থাৎ, আপনি একটি final ভেরিয়েবলে শুধু একবার মান অ্যাসাইন করতে পারেন। যদি আপনি দ্বিতীয়বার মান অ্যাসাইন করার চেষ্টা করেন তবে কম্পাইল টাইম এরর হবে।
উদাহরণ
public class FinalExample {
final int j = 100;
public static void main(String args[]) {
FinalExample obj = new FinalExample();
obj.j = 500;
System.out.println(obj.j);
}
}
কম্পাইল টাইম এরর
FinalExample.java:6: error: cannot assign a value to final variable j
obj.j = 500;
^ 1 error
"final" ফাংশনালিটি অর্জন করা
আসলে final কিওয়ার্ড ব্যবহার না করে final ফাংশনালিটি অর্জন করতে:
ভেরিয়েবলকে private করুন এবং সেটার মেথড ব্যবহার করে মান সেট করুন যাতে দ্বিতীয়বার আহ্বান করলে এটি পূর্বের মান রেখে দেয় বা এক্সেপশন থ্রো করে।
উদাহরণ
public class FinalExample {
private Integer num;
public void setNum(int num) {
this.num = this.num == null ? num : this.num;
}
private String data;
public void setData(String data) {
this.data = this.data == null ? data : demo();
}
public String demo() {
String msg = "You cannot set value to the variable data for the second time";
throw new RuntimeException(msg);
}
public static void main(String args[]) {
FinalExample obj = new FinalExample();
obj.setNum(200);
System.out.println(obj.num);
obj.setNum(500);
System.out.println(obj.num);
obj.setData("hello");
obj.setData("sample data");
}
}
আউটপুট
200
200
Exception in thread "main" java.lang.RuntimeException: You cannot set value to the variable data for the second time
at FinalExample.demo(FinalExample.java:15)
at FinalExample.setData(FinalExample.java:12)
at FinalExample.main(FinalExample.java:26)
ব্যাখ্যা: num ফিল্ডে প্রথমবার মান সেট হলে সেট হয়, দ্বিতীয়বার পূর্বের মান থাকে। data ফিল্ডে দ্বিতীয়বার সেট করার চেষ্টা করলে এক্সেপশন থ্রো হয়। এটি "write-once" প্যাটার্ন ইমপ্লিমেন্ট করে।