public class ShoppingCar { private double totalPrice; private int totalCount; private Map<Integer, OrderItemBean> itemMap; 为什么map初始化为空 public ShoppingCar() { } public ShoppingCar(double totalPrice, int totalCount, Map<Integer, OrderItemBean> itemMap) { this.totalPrice = 0; this.totalCount = 0; this.itemMap = new HashMap<>(); }
时间: 2024-04-07 20:34:01 浏览: 85
shoppingCar:基于vue2.0的shoppingCar
在你提供的代码中,构造函数`ShoppingCar(double totalPrice, int totalCount, Map<Integer, OrderItemBean> itemMap)`中的map初始化为空的原因是,在构造函数中,你重写了初始化map的代码。具体来说,你在构造函数中使用了以下代码:
```
this.itemMap = new HashMap<>();
```
这行代码会创建一个新的空的HashMap对象,并将其赋值给`itemMap`属性。但是,请注意,这行代码会在每次使用该构造函数创建对象时执行,而不是在类的默认构造函数中执行。
因此,如果你在创建`ShoppingCar`对象时使用了带参数的构造函数,并传入了`totalPrice`、`totalCount`和`itemMap`参数,那么map就会被重新初始化为空的HashMap对象。
如果你希望在使用带参数构造函数创建对象时保留原有的map对象,你可以修改构造函数的逻辑,如下所示:
```java
public ShoppingCar(double totalPrice, int totalCount, Map<Integer, OrderItemBean> itemMap) {
this.totalPrice = totalPrice;
this.totalCount = totalCount;
this.itemMap = itemMap;
}
```
这样,当你使用带参数构造函数创建对象时,传入的map对象就会被赋值给`itemMap`属性,而不会重新初始化为空的HashMap对象。
阅读全文