我怎样才能把这么简单的 Java 8 行代码写成 Java 7
How can I write this simple Java 8 line of code into 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)
这可以使用非常简单的 for 循环进行转换。您基本上需要检查数组的每个元素,找到您需要退出循环的第一个匹配元素,如果没有元素匹配,则只需 return 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;
}
除了@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());
我正在尝试实现一个 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)
这可以使用非常简单的 for 循环进行转换。您基本上需要检查数组的每个元素,找到您需要退出循环的第一个匹配元素,如果没有元素匹配,则只需 return 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;
}
除了@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());