A lambda expression is syntactic-sugar to implement the only method contained inside a functional interface. If your interface has multiple methods that need to be implemented, you cannot use lamda expressions to implement them. This makes sense as if it were possible to do so, then how would the compiler ascertain which method has been implemented?
Imagine this:
public interace TestInterface {
public int foo1(int arg);
public int foo2(int arg);
}
Imagine doing this:
TestInterace impl = () -> 1; //which method's implementation does this lamda represent
You can use anonymous inner classes to implement your interface.