java - 如何使用两个对象中最特殊的类型作为返回类型?
问题描述
我基本上想要的是,推断出更专业的类型,如下例所示:
Predicate<Object> first;
Predicate<String> second;
Predicate<String> firstOr = first.or(second);
Predicate<String> secondOr = second.or(first);
的方法签名将如何or(...)
实现这一点?
解决方案
这可以通过以下声明来完成Predicate<T>::or
:
default <R extends T> Predicate<R> or(Predicate<? super R> other) {
return r -> this.test(r) || other.test(r);
}
这将允许为这两种类型的任何子类型or
创建一个。因此,例如,以下将起作用:Predicate
Predicate
Predicate<Object> first;
Predicate<Number> second;
Predicate<Integer> firstOr = first.or(second);
Predicate<Integer> secondOr = second.or(first);
推荐阅读
- python - 我应该如何使用pygame连续旋转图像?
- maven - 不从特定于项目的 maven nexus 设置中检索 jars
- javascript - 为什么使用正则表达式验证密码失败?
- python - 在网站上发送 Twilio 短信后重定向到网页/但如果通过手机发送短信则不重定向
- google-sheets - 我的以日期为条件的 IF 公式不起作用
- git - 撤消“git update-index --assume-unchanged”不起作用(与 --no-skip-worktree 结合使用)
- iphone - Iphone 上的 Bootstrap 模式弹出问题
- r - 构建 R 文档时,Unicode 连字符会导致错误
- hyperledger-fabric - 八卦跳过握手与双向 TLS
- javascript - 如何通过 jquery 中的用户输入更新 json 中的值?