//基本接口 - 功能接口,因为它只包含一个抽象方法
@FunctionalInterface
public interface BaseInterface {
int sum(int a, int b);
}
使用lambda表达式
实例化功能界面public class Implementer {
public static void main(String[] args) {
BaseInterface base = (num1, num2) -> num1 + num2;
System.out.println(base.sum(3, 2));
}
}
在界面中扩展的功能 - 添加了新的默认方法
@FunctionalInterface
public interface BaseInterface {
int sum(int a, int b);
default String getUserDetails(String name) {
return name;
}
}
如果我覆盖默认方法以具有特定实现而不是默认方法 - 必须使用'implements'关键字以这种方式指定接口:
public class Implementer implements BaseInterface {
public String getUserDetails(String uname) {
uname = uname.trim();
return uname;
}
public static void main(String[] args) {
BaseInterface base = (num1, num2) -> num1 + num2;
System.out.println(base.sum(3, 2));
}
}
在这种情况下,编译器会抛出错误并提示实现继承的抽象方法。那么,在这种情况下,我是否应该以通常的方式实现抽象方法
public class Implementer implements BaseInterface {
public String getUserDetails(String uname) {
uname = uname.trim();
return uname;
}
public static void main(String[] args) {
//BaseInterface base = (num1, num2) -> num1 + num2;
System.out.println(base.sum(3, 2));
}
@Override
public int sum(int a, int b) {
return a + b;
}
}
(或)有没有办法继续使用lambda表达式?
答案 0 :(得分:0)
您可以在扩展BaseInterface
:
public interface Extender extends BaseInterface {
@Override
default String getUserDetails(String uname) {
uname = uname.trim();
return uname;
}
}
然后Extender e = (a, b) -> 2 * a + 2 * b;