เมื่อคุณเริ่มต้นตัวแปรสุดท้ายแล้ว คุณจะไม่สามารถแก้ไขค่าของมันได้อีก กล่าวคือ คุณสามารถกำหนดค่าให้กับตัวแปรสุดท้ายได้เพียงครั้งเดียว หากคุณพยายามกำหนดค่าให้กับตัวแปรสุดท้าย เวลาคอมไพล์จะเกิดข้อผิดพลาด
ตัวอย่าง
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
บรรลุฟังก์ชัน "ขั้นสุดท้าย"
เพื่อให้บรรลุการทำงานขั้นสุดท้ายโดยไม่ต้องใช้คำหลักสุดท้ายจริง ๆ -
ทำให้ตัวแปรเป็นส่วนตัวและตั้งค่าโดยใช้เมธอด setter ซึ่งหากคุณพยายามเรียกใช้เป็นครั้งที่สอง ตัวแปรควรตั้งค่าก่อนหน้าหรือส่งข้อยกเว้น
ตัวอย่าง
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)