最近在自学Java,看到Lambda表达式感觉好新奇,化简代码能力实在是太强了。于是来分享一下我对于Lambda表达式的学习心得。
Lambda表达式,通常用来化简匿名内部类的代码,比如说,现在一个动物接口类中有一个抽象方法run。
public interface Animal {
void run(String name);
}
那么在实验类中,我们需要写很长一段代码来调用或者是实现它。比如说下面代码
public class Test{
public static void main(String[] args) {
//不简化
Animal animal=new Animal() {
@Override
public void run(String name) {
System.out.println(name+"普通的run");
}
};
}
然后我们来体验Lambda表达式的魅力,化简去掉实例化部分以及重写函数定义部分,存在引用参数的可以把引用类型和括号删除掉,比如说这里的String。对于无参的,可以只保留括号。然后用->连接。
public class Test{
public static void main(String[] args) {
Animal animal1=name->{
System.out.println(name+"化简一步的run");
};
}
如果说需要调用这个实例方法,我们甚至可以省去 引用类型 成员变量这一部分,比如说,如果存在一个go()方法需要调用这个抽象方法的实例对象。可以直接化简为
go(name->System.out.println(name+"run中run"));