2
我在下面的代碼中有一個功能接口,其中有一個抽象方法和一個對象方法覆蓋。因此,當我爲此編寫Lambda表達式時,如何實現我的equals方法。要做到這一點如何在Java中使用lambdas實現兩個抽象方法?
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);
}
一種方法是創建一個類似如下匿名類,但有使用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));
}
}
一個合理的lambda表達式應該如何基於'equals'實現,它不能訪問'this'或者任何接口的方法?即使是匿名的基於類的實現也很難想象。 – Holger