关于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;

}

}
...全文
242 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. 这是为何转化的根本原因。
该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架 2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建2、用户登录、退出3、用户注册、邮件发送、以及用户信息激活4、首页商品信息页面搭建以及查询功能实现5、查询商品明细6、加入商品至购物车、删除、更新、清除购物车商品信息7、确认订单信息8、订单页面搭建以及下订单功能实现9、查询我的购物车以及订单信息10、商品系统后台界面搭建11、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

62,621

社区成员

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

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