关于JAVA购物车,有一句代码一点都没看懂

qzezgsssbnm 2010-03-26 12:46:40
package org.jndx.util;

import java.util.HashMap;
import java.util.Map;

import org.jndx.pojo.Product;

public class ShoppingCart {
private Map map=new HashMap();


public void addProducts(Product p,int num){

if(map.containsKey(p.getId())){
Items items=(Items)map.get(p.getId());//就是这句话,到底是什么意思啊?这样子为什么就能让
//items指向指定的商品?然后在指定的商品上加上数量?
//为什么要强行转换为Items类呢?
items.addNums(num);

}else{

map.put(p.getId(), new Items(p,num));


}

}


public void delProduct(Product p,int num){

//map.remove(key)

}


public void print(){

/*
*
* --------------------------
* 1 mianbao 4 2.5 10
* 2
* 3-------------------------------
*
*
*
*

*/


}
}



package org.jndx.util;

import org.jndx.pojo.Product;

public class Items {
private Product p;
private int num;
public Product getP() {
return p;
}
public void setP(Product p) {
this.p = p;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Items(Product p, int num) {
super();
this.p = p;
this.num = num;
}
public void addNums(int num){
this.num+=num;

}

}
...全文
240 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sirtener 2010-03-26
  • 打赏
  • 举报
回复
Items items=(Items)map.get(p.getId());//map里放的是object对象,获取的时候要获取正确的对象类型,所以就强制转换下
ifrancis 2010-03-26
  • 打赏
  • 举报
回复
Items items=(Items)map.get(p.getId());//就是这句话,到底是什么意思啊?这样子为什么就能让
//items指向指定的商品?然后在指定的商品上加上数量?
//为什么要强行转换为Items类呢?
items.addNums(num);

拿到key(就是p.getId())所对应的值value,再将它强制装换成Items类型。应为items.addNums(num)的存在,所以要强制转换。一个是为了初始化items,一个是为了调用Items的方法。
heruoyong 2010-03-26
  • 打赏
  • 举报
回复
Items items=(Items)map.get(p.getId);

map是存储的键值对,get方法通过key,找到存储该商品的记录
Items类有商品\数量组成
get方法获取的是一条Items记录
转换之后就可以改变数量了

用Product.Id作为key设计购物车不好,比如同一种编号的商品,由于批次不同,价格略有差异时,这里就不好处理了
Dazzlingwinter 2010-03-26
  • 打赏
  • 举报
回复
产品Product p是有id的
如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
这有什么难以理解的吗?
Select9 2010-03-26
  • 打赏
  • 举报
回复
这是面向对象中的 多态
Ark032425 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dazzlingwinter 的回复:]
产品Product p是有id的
如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
这有什么难以理解的吗?
[/Quote]
岳丰源 2010-03-26
  • 打赏
  • 举报
回复
如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
map里放的是object对象 赋值给Items转换很正常啊。
wenfei208 2010-03-26
  • 打赏
  • 举报
回复
主要的问题是 面向对象的设计,把Items 作为一个对象,p.getId()找到对象的标示 也就是id. 这是为何转化的根本原因。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧