Null pointer access: The variable marketcommends can only be null at this location

本文讨论了Java编程中出现的NullPointerAccess错误,特别是对于市场推荐列表的处理方式。通过实例分析,展示了如何避免错误的初始化方法,正确使用List的clear()方法来清空列表,以及在循环中安全地操作列表元素。文章提供了防止空指针异常的实用技巧,帮助开发者提升代码质量和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Null pointer access: The variable marketcommends can only be null at this location


源代码:

List meunList=backServiceInter.getmeunBypage(9,1);
		List meunrealList=new ArrayList();
		Meun meun=null;
		Photo photo=null;
		List<Marketmeun> marketlist=new ArrayList<Marketmeun>();
		marketlist=null;
		List<Market> marketcommends=new ArrayList<Market>();
		Market market=null;
		Marketmeun marketmeun=null;
		MeunQueryVo meunQueryVo=new MeunQueryVo();
		for(int i=0;i<meunList.size();i++)
		{
			meun=(Meun)meunList.get(i);
			photo=(Photo)backServiceInter.getPhoto("2",meun.getId());
			marketlist=backServiceInter.getMarketmeun(meun.getId());
			marketcommends.clear();
			/*错误的写法*/  
			//marketcommends=null;
			for(int j=0;j<marketlist.size();j++)
			{
				marketmeun=(Marketmeun)marketlist.get(j);
				market=(Market)backServiceInter.findById(Market.class,marketmeun.getMarket().getId());
				marketcommends.add(j,market);
				System.out.println("market="+market.getName());
			}
			meunQueryVo.setCommendmarkets(marketcommends);
			//System.out.println("marketcommends="+marketcommends.size());
			meunQueryVo.setMeun(meun);
			meunQueryVo.setBigImage(photo.getBigphoto());
			meunrealList.add(i,meunQueryVo);
		}



在一般的for循环时,为了避免过多的new 对象,常常采用上面的写法,即把对象先在对象外创建好,然后=null,但是List要注意,
marketcommends=null
意味着把数组置空,下面的
marketcommends.add(j,market);
自然加不进去了,List会默认为空,如果要在每次for循环前清空List,用clear() 即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值