java—如何使用默认方法返回函数接口的反向接口

qaxu7uf2  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(357)

我想使用默认方法“negate()”返回一个“relation”,它总是返回与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;
    }
}

我尝试了这个代码,但它给我堆栈溢出错误

qf9go6mv

qf9go6mv1#

Relation 在它的当前形式中是一个函数接口,我们可以从 negate() 这就颠倒了 test(...) :

public interface Relation<X, Y> {
    ...

    default Relation<X, Y> negate() {
        return (x, y) -> !this.test(x, y);
    }
    ...
}

ideone演示

相关问题