একবার ভেরিয়েবল final ডিক্লেয়ার করলে, ইনিশিয়ালাইজ করার পর আপনি এর মান আরও মডিফাই করতে পারবেন না। 게다가, ইনস্ট্যান্স ভেরিয়েবলের মতো final ভেরিয়েবল ডিফল্ট ভ্যালু দিয়ে ইনিশিয়ালাইজ হয় না।
তাই, final ভেরিয়েবল ডিক্লেয়ার করার সাথে সাথেই ইনিশিয়ালাইজ করা বাধ্যতামূলক। না হলে কম্পাইল টাইম এরর হবে।
উদাহরণ (এরর)
public class FinalExample {
final int j;
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.j);
}
}
কম্পাইল টাইম এরর
FinalExample.java:5: error: variable j might not have been initialized
System.out.println(obj.j);
^ 1 error
Final ভেরিয়েবল ইনিশিয়ালাইজ করার ৪টি উপায়
১. ডিক্লেয়ার করার সময়
public class FinalExample {
final int j = 100;
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.j);
}
}
আউটপুট: 100
২. Final মেথড ব্যবহার করে
import java.util.Scanner;
public class FinalExample {
final int num = getNum();
public static final int getNum() {
System.out.println("Enter the num value");
return new Scanner(System.in).nextInt();
}
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.num);
}
}
আউটপুট: (ইনপুট অনুযায়ী)
৩. কনস্ট্রাক্টর ব্যবহার করে
public class FinalExample {
final int num;
public FinalExample(int num) {
this.num = num;
}
public static void main(String args[]) {
FinalExample obj = new FinalExample(20);
System.out.println(obj.num);
}
}
আউটপুট: 20
৪. ইনস্ট্যান্স ইনিশিয়ালাইজেশন ব্লক ব্যবহার করে
public class FinalExample {
final int num;
{
num = 500;
}
public static void main(String args[]) {
FinalExample obj = new FinalExample();
System.out.println(obj.num);
}
}
আউটপুট: 500
ফাইনাল মেথড ব্যতীত, অন্যান্য তিনটি পদ্ধতিতে final ভেরিয়েবল ইনস্ট্যানশিয়েট होते ही ইনিশিয়ালাইজ হয়।