intellij-idea - Java 8循环推断警告

标签 intellij-idea lambda java-8

我对列表操作的了解来自脚本语言。因此,在Java中,如果发现具有特定名称的cookie,我会停止一些奇怪的事情。

List<Cookie> cookies = Arrays.asList(request.getCookies());
        String auth = cookies.stream()
                .filter(c -> c.getName().equals("auth"))
                .map(Cookie::getValue);

map方法上,IntelliJ向我显示“循环推断”。

Java compiler Error:(52, 25) java: incompatible types: no instance(s) of type variable(s) R exist so that java.util.stream.Stream conforms to java.lang.String

最佳答案

您当前的代码返回一个Stream<String>,因此您需要执行一个额外的步骤来返回一个字符串:

Optional<String> auth = cookies.stream()
            .filter(c -> c.getName().equals("auth"))
            .map(Cookie::getValue)
            .findAny();

请注意,它返回Optional<String>,因为可能没有与“auth”匹配的Cookie。如果未找到“auth”时要使用默认值,则可以使用:
String auth = cookies.stream()
            .filter(c -> c.getName().equals("auth"))
            .map(Cookie::getValue)
            .findAny().orElse("");

关于intellij-idea - Java 8循环推断警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422166/

相关文章:

c# - 带有 Lambda 语句的 IQueryable 返回类型

java - 如何将 Android SDK 添加到 IntelliJ

scala - 如何修复Intellij的Scala应用程序上的“错误:找不到或加载主类”?

java - 我可以看到 IntelliJ 用于构建 java 项目的确切命令吗?

java - 如何将 Java 双冒号运算符 (::) 翻译成 Scala?

c++ - 将 lambda 传递给 std::thread 并调用类方法

java - 为什么 Stream::reduce 中的累加器是 BiFunction 而不是像组合器那样的 BinaryOperator?

java - WicketTester 选择 Radio Choice 并单击 DownloadLink

lambda - Java 8 流和 lambda 是在骗人吗?

java - Intellij 无法从另一个模块中的一个模块访问类