Rob*_*rtW 33 lambda intellij-idea java-8
我对列表操作的了解来自脚本语言.所以在Java中,我找到了一些奇怪的东西,以便找到具有特定名称的cookie.
List<Cookie> cookies = Arrays.asList(request.getCookies());
String auth = cookies.stream()
.filter(c -> c.getName().equals("auth"))
.map(Cookie::getValue);
Run Code Online (Sandbox Code Playgroud)
在map方法上,IntelliJ向我展示了"循环推理".
Java编译器错误:(52,25)java:不兼容类型:没有类型变量的实例R存在,以便java.util.stream.Stream符合java.lang.String
ass*_*ias 37
您当前的代码返回a Stream<String>,因此您需要一个额外的步骤来返回一个字符串:
Optional<String> auth = cookies.stream()
.filter(c -> c.getName().equals("auth"))
.map(Cookie::getValue)
.findAny();
Run Code Online (Sandbox Code Playgroud)
请注意,它返回一个,Optional<String>因为可能没有与"auth"匹配的Cookie.如果您想使用默认值,如果找不到"auth",您可以使用:
String auth = cookies.stream()
.filter(c -> c.getName().equals("auth"))
.map(Cookie::getValue)
.findAny().orElse("");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38342 次 |
| 最近记录: |