एक बार final वेरिएबल को इनिशियलाइज़ करने के बाद आप उसके वैल्यू को आगे मॉडिफाई नहीं कर सकते। यानी आप 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" कार्यक्षमता प्राप्त करना
बिना actual 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 SEPTEMBER.remaining.FinalExample.demo(FinalExample.java:15)
at SEPTEMBER.remaining.FinalExample.setData(FinalExample.java:12)
at SEPTEMBER.remaining.FinalExample.main(FinalExample.java:26)