JAVA8学习1-Lambda 表达式

JAVA8学习

1.Lambda 表达式

  • 在java8之前,我们无法将行数作为参数传递给一个方法,也无法声明返回一个函数的方法
  • 在JavaScript中,函数参数是一个函数,返回值是另一个函数的情况非常常见;JavaScript是一门非常典型的函数式语言;

JavaScript回调函数写法

a.execute(callback(event){
	event......          
})//在java8之前,我们是不可能在java8中见到类似这种写法

Java匿名内部类写法

protected void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Button fistButton = (Button)findViewById(R.id.first);
  Button secondButton = (Button)findViewById(R.id.second);
  fistButton.setOnClickListener(new View.OnclickListener(){
    @Override
    public void OnClick(View v){
      geToFistActivity();
    }
  })
    seconButton.setOnClickListener(new View.OnclickListener(){
    @Override
    public void OnClick(View v){
      geToSecondActivity();
    }
  })
}

可以看出,在实现匿名内部类中,需要写太多重复代码,视觉上给人带来就是臃肿的代码

1.1 Lambda 表达式的应用:

java8之前方法函数依赖于对象而存在,java8后函数作为一等公民了

在将函数作为一等公民的语言中,Lambda表达式的类型是函数,但在Java中,Lambda表达式是对象,他们必须依附于一类特别的对象类型----函数式接口(function interface)

基本结构:(type param1,type param2, type param3) -> {body}

(param1, param2) -> {body}

param -> {body}

() -> {body}

() -> sout

(o1, o2) -> o2.compareTo(o1)

上面swing例子改装:

jButton.addActionListener(e -> System.out.println("Button Pressed "));

        jFrame.add(jButton);
        jFrame.pack();
        jFrame.setVisible(true);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值