我在下面的代码中有一个功能接口,它有一个抽象方法和一个对象方法覆盖。因此,当我为此编写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));
}
}
答案 0 :(得分:7)
你不能。如果您需要覆盖equals
,则需要创建一个类(匿名或其他),您不能使用lambda。