我怎样才能把这么简单的 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());