如何:使用自定义类作为Map参数

时间:2012-03-23 10:44:56

标签: java class map

我在第9行(带注释的那个)中得到了nullpointerexception。

我正在尝试将该方法用作shoppingCart类中的参数:

import java.util.*;

public class ShoppingCart {

    private Map<String, Purchase> ShoppingCart;

    public void add (String product, int price) {
        Purchase purchase = new Purchase(product, 1, price);
        ShoppingCart.put(product, purchase);         //this line doesn't work!
    }

    public int price() {
        Collection<Purchase> total = shoppingCart.values();

        }   
}

Purchase方法的构造函数是:

 public Purchase(String product, int amount, int price) {

主要尝试将产品添加到shoppingCart,这会导致nullpointerexception:

ShoppingCart cart = new ShoppingCart();
cart.add("milk, 3);

我想在地图方面我缺少一些基本的东西。我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

您忘记了实例化地图ShoppingCart = new HashMap<String, Purchase>()

顺便说一句,在java中,变量总是以小写字母(camelCase)开头,只有类以大写字母开头(PascalCase)

答案 1 :(得分:0)

您永远不会创建ShoppingCart对象。这与定义变量时创建对象的C ++不同;所有变量实际上都是对象的引用,你需要明确地创建对象(new)。

顺便说一下,这一行会导致编译错误(shoppingCart应为小写)

private Map<String, Purchase> ShoppingCart;

答案 2 :(得分:0)

我认为问题在于你没有初始化你的shoppingCart:

private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>()