1.InterfaceOne是一个具有两种方法的接口,我的问题是如何使用Lambda表达式覆盖这2种方法?
interface InOne{
void m1();
void m2();
}
public class LambdaExpForTwomethodsInInterface {
public static void main(String[] args) {
//For One method overriding
InOne one=()->{
System.out.println("InOne m1");
};
one.m1();
}
}
2。如果接口中有5种方法,但是我只想覆盖一种方法,那么使用Lambda exp有什么办法吗?
答案 0 :(得分:4)
使用Lambda exp有什么办法吗?
不,它们只能引用FunctionalInterface
。
如何使用Lambda表达式覆盖这两种方法?
尽管不能使用lambda表达式,但是您仍然可以使用匿名类实例化它们:
InOne one = new InOne() {
@Override
public void m1() {
}
@Override
public void m2() {
}
};
答案 1 :(得分:0)
interface InOne {
default void m1() {}
default void m2() {}
}
InOne one = new InOne() {
@Override
public void m1() {
System.out.println("InOne m1");
}
};
one.m1(); // InOue m1
one.m2(); // <nothing>
@FunctionalInterface
interface InOneM1 {
void m1();
}
@FunctionalInterface
interface InOneM2 {
void m2();
}
InOneM1 oneM1 = () -> System.out.println("InOne m1");
InOneM2 oneM2 = () -> System.out.println("InOne m2");
oneM1.m1();
oneM2.m2();