请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

currentShop

翔仔哥,我有一个问题就是修改产品信息控制判断语句

if(product != null && product.getShop() != null && product.getShop().getShopId() != null)
我们这里的shopId是从会话域中查询出来的然后在将它赋值给Product对象
Shop currentShop = (Shop) request.getSession().getAttribute(“currentShop”);
product.setShop(currentShop);
那么这个currenShop是不是只有店铺Id值,其它什么店铺名称,位置都是空值,那上面的判断语句中&&product.getShop() != null这个是不是多余的?或则说我有什么地方没搞懂

正在回答

1回答

翔仔 2019-04-16 00:22:50

同学好,

if(product != null && product.getShop() != null && product.getShop().getShopId() != null)

是在service层里,而service层是假设不知道controller传入的东西是否靠谱的基础上去弄的,如果你不判断product.getShop() != null,而直接product.getShop().getShopId() != null,有可能因为shop为空而报错。

0 回复 有任何疑惑可以回复我~
  • 提问者 Joker4411416 #1
    我以为shop里面没有值就是空,我运行了这段代码
    @Test
    	public void test() {
    		Shop shop = new Shop();
    		if(shop != null) {
    			System.out.println("shop对象不为空");
    		}
    		shop.setShopId(1L);
    		if(shop != null) {
    			System.out.println("赋值shopId的shop不为空");
    		}
    	}
    发现只要实例化了shop对象,它就不为空,但是product.getShop().getShopId() 的值只要大于0,那么shop可能是空吗?
    回复 有任何疑惑可以回复我~ 2019-04-16 08:29:20
  • 翔仔 回复 提问者 Joker4411416 #2
    只要new出实例就不会为空,即便ShopId为空。但是service层先判断product.getShop()不为空是为了防止万一product.getShop()为空 product.getShop().getShopId报错
    回复 有任何疑惑可以回复我~ 2019-04-16 17:44:43
  • 提问者 Joker4411416 回复 翔仔 #3
    好的,知道了
    回复 有任何疑惑可以回复我~ 2019-04-16 17:47:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信