Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะสร้างตัวแปรที่สามารถตั้งค่าได้เพียงครั้งเดียว แต่ยังไม่สิ้นสุดใน Java ได้อย่างไร


เมื่อคุณเริ่มต้นตัวแปรสุดท้ายแล้ว คุณจะไม่สามารถแก้ไขค่าของมันได้อีก กล่าวคือ คุณสามารถกำหนดค่าให้กับตัวแปรสุดท้ายได้เพียงครั้งเดียว หากคุณพยายามกำหนดค่าให้กับตัวแปรสุดท้าย เวลาคอมไพล์จะเกิดข้อผิดพลาด

ตัวอย่าง

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)