无法使用 HashMaps 在我的 java class 中修复此 NullPointerException

Cannot fix this NullPointerException in my java class with HashMaps

我必须制作一个简单的应用程序,它根据仓库中的存储进行排序,但我已经 运行 进入仓库和主要 classes 中的这个 NullPointerException 并且似乎无法理解出什么问题了。这是代码:

package com.forward.forward;

import java.util.HashMap;

public class Warehouse
{

public HashMap<String, ProductQuantity> storageMap = new HashMap<>();

public Warehouse() {
}

public void addProductQuantity(String description, ProductQuantity 
quantity)
{
    if(description != quantity.getProduct().getDescription())
    {
        throw new IllegalArgumentException("<devMessage>Please make sure 
that description and Product description match" +
                "when creating objects!");
    }
    storageMap.put(description, quantity);
}

public int getProductQuantity(String description)
{
    if(!storageMap.containsKey(description))
    {
        System.out.println("Product is not present in warehouse!");
    }
    return storageMap.get(description).getQuantity();
}

@Override
public String toString() {
    return "Warehouse{" +
            "storageMap=" + storageMap +
            '}';
}
}

这是主要的class:

package com.forward.forward;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ForwardApplication {

public static void main(String[] args)
{

    Product product1 = new Product("Fender Jazz Bass", "Bass", "Relative", "None", 400, 2016);
    Product product2 = new Product("Fender Jaguar", "Guitar", "Relative", "None", 300, 2020);
    Product product3 = new Product("Fender Mustang", "Guitar", "Relative", "None", 200, 2018);
    Product product4 = new Product("Jackson Rhodes V", "Guitar", "Relative", "None", 1000, 1998);
    Product product5 = new Product("Vox VT20+", "Amplifiers", "Relative", "None", 250, 2015);

    ProductQuantity product1Quantity = new ProductQuantity(product1, 2);
    ProductQuantity product2Quantity = new ProductQuantity(product2, 4);
    ProductQuantity product3Quantity = new ProductQuantity(product3, 3);
    ProductQuantity product4Quantity = new ProductQuantity(product4, 0);
    ProductQuantity product5Quantity = new ProductQuantity(product5, 10);

    Warehouse stock = new Warehouse();
    stock.addProductQuantity("Fender Jazz Bass", product1Quantity);
    stock.addProductQuantity("Fender Jaguar", product2Quantity);
    stock.addProductQuantity("Fender Mustang", product3Quantity);
    stock.addProductQuantity("Jackson Rhodes V", product4Quantity);
    stock.addProductQuantity("Vox VT20+", product5Quantity);

    System.out.println("Search for product availability: ");
    Scanner in = new Scanner(System.in);
    String description = in.next();


    ArrayList<Warehouse> productsList = new ArrayList<>();
    productsList.add(stock);
    for (Warehouse w:
         productsList) {
        if (w.getProductQuantity(description) == 0)
        {
            System.out.println("Product unavailable!");
        }
        else
        {
            System.out.println("Available!");
        }
    }

    //System.out.println(productsList);  //made for testing

}

}

我运行应用时报错信息如下:

Search for product availability: 
Jackson Rhodes V
Product is not present in warehouse!
Exception in thread "main" java.lang.NullPointerException
at com.forward.forward.Warehouse.getProductQuantity(Warehouse.java:29)
at 
com.forward.forward.ForwardApplication.main(ForwardApplication.java:44)

Process finished with exit code 1

你需要初始化hashmap

public HashMap<String, ProductQuantity> storageMap = new HashMap<>(); 

或者通过构造函数传递实例