一、推导Lamda表达式
public class LamdaTest {
static class Interface1 implements MyInterface {
@Override
public void test ( ) {
System. out. println ( "I am Interface1" ) ;
}
}
public static void main ( String[ ] args) {
MyInterface myInterface = new Interface ( ) ;
myInterface. test ( ) ;
myInterface = new Interface1 ( ) ;
myInterface. test ( ) ;
class Interface2 implements MyInterface {
@Override
public void test ( ) {
System. out. println ( "I am Interface2" ) ;
}
}
myInterface = new Interface2 ( ) ;
myInterface. test ( ) ;
myInterface = new MyInterface ( ) {
@Override
public void test ( ) {
System. out. println ( "I am Interface3" ) ;
}
} ;
myInterface. test ( ) ;
myInterface = ( ) - > {
System. out. println ( "I am Interface4" ) ;
} ;
myInterface. test ( ) ;
}
}
interface MyInterface {
void test ( ) ;
}
class Interface implements MyInterface {
@Override
public void test ( ) {
System. out. println ( "I am Interface" ) ;
}
}
二、Lamda简化
public class LamdaTest {
public static void main ( String[ ] args) {
MyInterface myInterface = null;
myInterface = ( int a) - > {
System. out. println ( "I am Interface4" ) ;
} ;
myInterface. test ( 5 ) ;
myInterface = ( a) - > {
System. out. println ( "I am Interface5" ) ;
} ;
myInterface. test ( 6 ) ;
myInterface = a - > {
System. out. println ( "I am Interface6" ) ;
} ;
myInterface. test ( 7 ) ;
myInterface = a - > System. out. println ( "I am Interface7" ) ;
myInterface. test ( 8 ) ;
}
}
interface MyInterface {
void test ( int a) ;
}
总结
总结:lamda表达式只有一行代码的情况下才能简化成一行,如果有多行,那就使用代码块(花括号)包裹
前提是接口是函数式接口
多个参数也可以去掉参数类型,必须加上括号