import java.io.* ; interface i1 { public void foo() ; } interface i2 { public void foo() ; } interface i3 { public void foo() ; } interface i4 { public int foo(int arg1) ; } interface i5 { } public class multiple1 { public static void main( String args[] ) { //Normal Lambda object Runnable runnableObject = () -> System.out.println("Serializable!"); //Allowed Runnable runnableObject1 = (Runnable & Serializable)() -> System.out.println("Serializable!"); if( runnableObject1 instanceof Serializable ) System.out.println( "runnableObject1 is Serializable") ; Serializable runnableObject2 = (Runnable & Serializable)() -> System.out.println("Serializable!"); //Compiler error because Serializable does not have any methods. //runnableObject2.run() ; //Allowed i1 i1Object = (i1 & i2 )() -> System.out.println("2 interfaces with a single method of the same signature."); if( i1Object instanceof i2 ) System.out.println( "i1Object also implements i2.") ; i1Object.foo() ; //Allowed i1 i1Object1 = (i1 & i2 & i3)() -> System.out.println("3 interfaces with same signatures."); //Compiler error i4 has a different method signature //i1 i1Object2 = (i1 & i2 & i4)() -> System.out.println("3 interfaces with different signatures."); //Allowed i1 i1Object3 = (i1 & i2 & i5)() -> System.out.println("3 interfaces with a marker interface."); } }