[英]how to increment final attribute variable in constructor?
在我的作業中,我有一個 Java class 具有屬性
private final int idOfPassenger;
private final String name;
在僅采用String
作為參數的構造函數中,我應該初始化乘客的姓名和 ID。 但是每次我創建一個new Passenger
時,我應該將idOfPassenger
變量遞增一個(從 0 開始),因此沒有乘客具有相同的號碼。
我不允許更改private final
或構造函數參數。 每次創建新乘客時如何將idOfPassengers
遞增 1?
public class Passenger {
private final int idOfPassenger;
private final String name;
public Passenger(String name) {
this.name = name;
this.idOfPassenger = 0;
}
}
final 字段的要點是它不能重新分配給新值。 所以你不能增加它。 但是你誤解了任務。 您不應該增加private final int idOfPassenger;
在創建新的 object 時,始終使用一個高於上次創建的 object 的值來初始化它。您可以通過引入屬於 class 而不是任何特定 object 的 static 字段來實現該行為:
public class Passenger {
private final int idOfPassenger;
private final String name;
private static int currentId = 0;
public Passenger(String name) {
currentId++;
this.name = name;
this.idOfPassenger = currentId;
}
}
這將創建一個 static 字段,該字段屬於 class 並且您的所有對象共享。 它用 0 初始化,然后每次創建新的 object 時,static 字段都會遞增, final int idOfPassenger
值設置為 static 字段的當前值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.