如何解决如何使用默认方法返回功能接口的逆接口
我想使用默认方法“ 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
的当前形式是一个功能接口,因此我们可以从negate()
返回一个lambda来反转test(...)
的结果:
public interface Relation<X,Y> {
...
default Relation<X,Y> negate() {
return (x,y) -> !this.test(x,y);
}
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。