簡體   English   中英

如何解決java.lang.NullPointerException

[英]How to solve java.lang.NullPointerException

我在cars.add(car);上收到java.lang.NullPointerException cars.add(car); 行,我真的不確定如何解決它,我已經閱讀了一些與此錯誤相關的其他線程,但似乎仍然沒有找到答案。

public class RentalCompany {

    private ArrayList<Car> cars;
    private String description;
    private int carDownPayment;
    private int rate;
    private int carNumber;

    public void addCar(String descriptionOfTheCar, int downPayment,
        int dailyRate) {
        Car car = new Car(descriptionOfTheCar, downPayment, dailyRate);
        cars.add(car);
    }
}

因為您尚未初始化private ArrayList<Car> cars字段。 在構造函數中或在方法本身中懶惰地執行此操作。

private ArrayList<Car> cars = new ArrayList<Car>();

要么

public RentalCompany() {
    this.cars = new ArrayList<Car>();
}

要么

public void addCar(String descriptionOfTheCar, int downPayment,
    int dailyRate) {
    this.cars = new ArrayList<Car>();
    Car car = new Car(descriptionOfTheCar, downPayment, dailyRate);
    cars.add(car);
}

我個人更喜歡構造函數方法。

或者你可以使用:

    public void addCar(String descriptionOfTheCar, int downPayment, int dailyRate)
        {
            if (cars == null)
                cars = new ArrayList<>();

            Car car = new Car(descriptionOfTheCar, downPayment, dailyRate);
            cars.add(car);
        }

假設它的一個線程訪問

你沒有啟動汽車。

private ArrayList<Car> cars = new ArrayList<Car>();

初始化列表:

private ArrayList<Car> cars = new ArrayList<Car>();

cars尚未初始化。

嘗試將以下內容添加到您的構造函數中:

cars = new ArrayList<>();

在添加汽車之前。

最初cars == null ,所以初始化它如下:

 private ArrayList<Car> cars = new ArrayList<Car>();

您的汽車未初始化,為空。 並且您嘗試將元素添加到此空數組列表中。

您可以在使用前對其進行初始化。

cars=new ArrayList<Car>();
Car car = new Car(descriptionOfTheCar, downPayment, dailyRate);
cars.add(car);

看起來你沒有初始化你的汽車 ArrayList。

在沒有看到調用 addCar() 的任何細節的情況下,我不能肯定地說,但兩個最明顯的可能性是 String 尚未初始化或 ArrayList 尚未初始化。

我假設您的大部分代碼已被省略,但從這個示例中,您似乎還沒有初始化ArrayList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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