java如何实现lambda

现在才开始关注lambda表达式是不是有点过时了?毕竟这是jdk8加入的特性之一,现在jdk的版本迭代的速度是非常之快的,现在已经是jdk13了吧。但是jdk8作为在语言层面改动程度最大的一版,并且是在现代企业开发中应用最广泛的jdk版本,了解其中的一些特性也是必不可少的,并且也是十分必要的。

使用匿名内部类

当我们的方法中有一个对象类型的形参时,我们可以这样调用。
假设我们定义了一个People类

public class People {

    String name;

    int age;

    String sex;

}

我们可以这样去调用它

public class Main {
//  1
 public static void main(String[] args)
    {
        Test1 test1 = new Test1();
        People p = new People();
        test1.getPeople(p);
        return;
    }
//  2 直接new People而不需要一个形参名来替代  
 public static void main(String[] args)
    {
        Test1 test1 = new Test1();
        test1.getPeople(new People());
        return;
    }
}

更常见的匿名内部类调用如下,这是我们通常意义下的匿名内部类

button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent actionEvent){
        System.out.println("Action detected");
    }
});

一个接口,并重写其方法
为什么我们会用lambda表达式去代替匿名内部类的使用呢?正如你将要看到的,使用Lambda表达式不仅让代码变的简单、而且可读、最重要的是代码量也随之减少很多

如何去使用lamada表达式

我们先看看将上述转化为lambda表达式的样子

button.addActionListener(
	(x)->{ System.out.println("Action detected");}
});
  1. 自定义函数式接口
    从字面意思我们可以理解到,这里我们把一个接口函数化,例如我们上述操作的那样。本来是通过一个new ActionListener()这样来传递参数的,现在我们通过lambda表达式,直接写成了一个类似于函数的方式,通过一个函数的实现来表达这个接口函数的参数。其实也很容易理解,函数式接口,即在一个接口下面有且仅有一个抽象接口方法,并用@FunctionalInterface声明
@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

然后我们新开线程时就可以这样调用

 Thread t = new Thread(()->{
	System.out.println("Action detected");
});

当然lamada表达式的使用和理解是需要熟练和坚持使用,虽然不想在其它语言中被开发者大规模的使用,但当我们真正的掌握了这种编写风格时,就会深深的喜欢上它 >.<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值