如何使用lambdas在Java中实现两个抽象方法?

时间:2016-07-13 06:22:50

标签: java lambda interface functional-programming java-8

我在下面的代码中有一个功能接口,它有一个抽象方法和一个对象方法覆盖。因此,当我为此编写Lambda表达式时,如何实现我的equals方法。

import static java.lang.System.out;

public class Test {
    public static void main(String[] args) {
        AddToString test = a -> (a + " End");
        out.println(test.stringManipulation("some string"));
        out.println(test.increment(5));
        out.println(test.equals(null));
    }
}

@FunctionalInterface
interface AddToString {
    String stringManipulation(String a);
    default int increment(int a) { return a+1; }
    @Override
    public boolean equals(Object obj);
} 

这样做的一种方法是创建Anonymous类,如下所示,但有一个更好的方法使用lambda表达式 -

public class Test {
    public static void main(String[] args) {
        AddToString test = new AddToString() {
            public String stringManipulation(String a) {
                return a + " End";
            }
            @Override
            public boolean equals(Object Obj) {
                //Just testing whether it overrides
                return 5==5;
            }
        };
        out.println(test.stringManipulation("some string"));
        out.println(test.increment(5));
        out.println(test.equals(null));
    }
}

1 个答案:

答案 0 :(得分:7)

你不能。如果您需要覆盖equals,则需要创建一个类(匿名或其他),您不能使用lambda。