Java 如何:使用自定义类作为映射参数
我在第9行得到了nullpointerexception(带有注释的那一行) 我正在尝试将该方法用作shoppingCart类中的参数:Java 如何:使用自定义类作为映射参数,java,class,map,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
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();
}
}
Main尝试将产品添加到shoppingCart,这会导致nullpointerexception:
ShoppingCart cart = new ShoppingCart();
cart.add("milk, 3);
我想我在地图上遗漏了一些基本的东西。我做错了什么?您从未创建
ShoppingCart
对象。这不是像C++那样,在定义变量时创建对象;所有变量实际上都是对对象的引用,您需要明确地创建对象(使用new
)
顺便说一句,此行导致编译错误(shoppingCart应为小写)
私人地图购物车;
您忘记实例化地图ShoppingCart=newhashmap()
顺便说一下,在java中,变量总是以小写字母(camelCase)开头,只有类以大写字母(PascalCase)开头。我认为问题在于您没有初始化购物车:
private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>()
private Map ShoppingCart=new HashMap()
业余错误:)谢谢!它是芬兰语的,所以必须做一些翻译。下次会更仔细。创建贴图对象。变量名也遵循驼峰式大小写。
private Map<String, Purchase> ShoppingCart;
private Map<String, Purchase> ShoppingCart= new HashMap<String,Purchase>()