我对列表操作的了解来自脚本语言。所以在Java中,我停止了一些奇怪的事情,以找到使用特定名称的cookie。Java 8循环推理警告
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
正如消息所述,map将返回一个Stream,并且不能将其分配给String。你必须告诉它应该如何成为一个单一的'字符串'。也许你想使用'.findAny()。get()'? – Holger 2014-10-17 09:47:01
不错的问题和答案,但我仍然不知道循环推理是什么!将继续谷歌搜索,这是第一个结果。 – JimLohse 2016-02-22 20:01:55
@JimLohse这个答案解释了什么是循环推论:http://stackoverflow.com/a/36258012/3142816。基本上,内部子表达式的类型不能在没有外部子表达式类型的情况下被推断出来,如果没有内部子表达式类型 – sorianiv 2016-06-02 09:58:49