我如何将这行简单的Java 8代码写入Java 7



我试图实现一个CSRF令牌,但所有的信息都是用Java 8+版本编程的,所以我需要的是一些帮助重写这行在Java 6/7:

tokenCookie = Arrays.stream(httpReq.getCookies()).filter(c -> c.getName().equals(csrfCookieExpectedName)).findFirst().orElse(null);

实际上,从那行我只得到错误:

c -> c.getName().equals(csrfCookieExpectedName)

除了@GIO的答案,您还可以像这样尝试for-each循环:

public Cookie getExpectedCookieName(Cookie[] cookies) {
for (Cookie c : cookies) {
if (c.getName().equals(csrfCookiesExpectedName)) {
return c;
}
}
return null;
}

并像这样调用它:tokenCookie = getExpectedCookieName(httpReq.getCookies());

这可以使用一个非常简单的for循环来转换。你需要做的就是检查数组中的每一个元素,找到你需要的第一个匹配的元素,然后退出循环,如果没有元素匹配,那么简单地返回null;

public Cookie getExpectedCookieName() {
for (int i = 0; i < httpReq.getCookies().length; i++) {
if(httpReq.getCookies()[i].getName().equals(csrfCookiesExpectedName)) {
return httpReq.getCookies()[i];
}
}
return null;
}

最新更新