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

Shu*_*ain 2 java lambda functional-programming interface 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);
} 
Run Code Online (Sandbox Code Playgroud)

一种方法是创建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));
    }
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 7

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