一个关于lambada表达式的错误

需求

遍历存放session的list,如果list中存在一个session和当前发起请求的浏览器的session相同,则跳出方法。

/*
	request对象监视器
*/
public class MyRequestListener implements ServletRequestListener{

	/*
		监视request对象的创建
	*/	
	@Override
	public void requestInitialized(ServletRequestEvent sre) {
	
		(HttpServletRequest)request = (HttpServletRequest)sre.getServletRequest();
		HttpSession currentSession = request.getSession();
		
		ServletContext context = sre.getServletContext();
		List<HttpSession> = (List<HttpSession>)context.getAttribute("list");
		
		//错误在这里,里面的return;会跳出lambda表达式,而且这个return毫无作用
		list.forEach((HttpSession s)->{
			if(s == currentSession){
				return;
			}
		});
		list.add(currentSession);
						
	}
}

上面的错误在于在lambda表达式里面写上return,最后会跳出lambda表达式。

如果想跳出方法,就写成一般的循环即可

public void function(){
	for(HttpSession s:list){
		if(s == currentSession){
			return;
		}
	}
}

就写成上面即可。

发布了11 篇原创文章 · 获赞 7 · 访问量 1327

猜你喜欢

转载自blog.csdn.net/The_Love_Juice/article/details/104757993