java - 如何使用默认方法返回功能接口的逆接口
问题描述
我想使用默认方法“negate()”返回一个“关系”,它总是返回方法 test() 的反面。我怎样才能做到这一点?
public interface Relation<X,Y> {
boolean test(X x, Y y);
default Relation<X,Y> negate() {
// TODO
Relation<X, Y> relation = new Relation<X, Y>() {
public boolean test(X x, Y y) {
return !this.test(x, y);
}
};
return relation;
}
}
我尝试了这段代码,但是它给了我堆栈溢出错误
解决方案
由于Relation
其当前形式是一个函数式接口,我们可以从中返回一个 lambda,negate()
它会反转以下结果test(...)
:
public interface Relation<X, Y> {
...
default Relation<X, Y> negate() {
return (x, y) -> !this.test(x, y);
}
...
}
推荐阅读
- python - 通过将 for 循环替换为 pandas 操作来提高代码效率
- javascript - 在nodejs中检查日期数组是否由n个连续天组成的最佳方法?
- spring-boot-actuator - 是否有 Hibernate Metrics 千分尺可用于捕获 Hibernate/JPA SQL 语句、最小、最大时间
- json - 托管 API 并将 Json 数据推送到 S3,同时将其转换为 Avro
- python - 'TypeError:元组索引必须是整数或切片,而不是元组'是什么意思?
- bash - 显示 gcloud 的所有行
作业列表输出 - node.js - 如何在 Node JS 中上传文件?
- jhipster - 无法启动使用 JHipster 生成的后端
- csv - Golang 读取 csv 在内存中消耗的空间是磁盘空间的 2 倍以上
- vb.net - 使用 VB.NET 的 SQLite 数据库的性能问题