簡體   English   中英

如何在構造函數中增加最終屬性變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM