我有两个界面:
interface A {
public void pull(SomeclassA a, SomeclassB b);
}
interface B {
public void make(SomeClassM m, SomeclassN n);
}
在每个interface
中,我有一个具有相同参数数量的方法。然后我有一个使用上述两个接口的方法的类,即:
public class C {
public void test(B b) {
}
public void test(A a) {
}
}
我需要使用Java 8 lambda表达式的类。 Java如何识别将哪个接口传入此类的方法?
public static void main(String[] args) {
C c = new C();
c.test(
(a , b ) ->{
}
);
}
答案 0 :(得分:4)
您将收到编译错误,因为编译器无法在两个重载的test
方法之间进行选择。
要解决此问题,您必须指定lambda参数的类型。
例如:
public static void main(String[] args) {
C c = new C();
c.test(
(SomeClassM a , SomeClassN b) -> {
}
);
}
将导致test(B b)
被选中。