如何在 Java 中建立一個只能設定一次但不是 final 的變數?
一旦初始化 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”功能
不實際使用 final 關鍵字實現 final 功能 −
將變數設為 private 並使用 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)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式語言
C++
C#
MongoDB
MySQL
Javascript
PHP