java - 您能否向我解释为什么下界通配符在我的示例中不起作用?
问题描述
public class aa {
public static void main(String[] args)
{
Predicate<? super String> predicate = s -> true;
Stream<CharSequence> stream1 = Stream.generate(() -> "growl! ");
boolean b1 = stream1.limit(2).anyMatch(predicate);// Compiler error
}
}
String 实现 CharSequence;据我所知,这意味着谓词必须接受 CharSequence。但是编译器说我必须将我的谓词转换成这样:
boolean b1 = stream1.anyMatch((Predicate<? super CharSequence>) predicate);
我不明白为什么我必须投射我的谓词。你能向我解释一下这里发生了什么吗?
解决方案
推荐阅读
- ios - UITableView,点击按钮自动调整单元格高度
- python - 如何检查另一个程序中的任务是否已完成?
- spring - Spring Boot:Spring 数据 jpa + Mariadb
- macos - 在 Mac 上安装 kubectl 时如何解决 localhost:8080 not found 问题?
- c - 如何在 makefile 中包含项目目录之外的标头
- google-cloud-platform - 我将 Java 代码放在 Google Cloud Tasks 的什么位置
- javascript - 未使用 JavaScript 建立 WebSocket 连接
- reactjs - 找不到模块:无法解决“react-bootstrap”问题
- angularjs - 在Typescript中以json格式访问对象中的对象
- java - 如何获得 ConstraintViolation