【发布时间】:2016-11-15 14:08:15
【问题描述】:
我在下面的代码中有一个功能接口,它有一个抽象方法和一个对象方法覆盖。所以当我为此编写 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);
}
一种方法是创建如下所示的匿名类,但有没有更好的方法使用 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));
}
}
【问题讨论】:
-
一个基于
equals的合理 lambda 表达式应该如何实现,它既不能访问this也不能访问任何接口的方法?即使是基于匿名类的实现也很难想象。
标签: java lambda interface functional-programming java-8