Java8新特性之lambda表达式

lambda表达式是JDK8的比较有鲜明特点的一个新特性,但是对于一些初学者来说,有的理解起来比较绕。下面我写一下我自己的理解。

lambda表达式是干什么用的?

谈lanmbda表达式之前还要必须说的一个东西是匿名内部类。

什么是匿名类?看下面这段代码区分匿名和非匿名的区别。

     Demo01 demo01 = new Demo01(); //这是一个普通的类实例化
     demo01.test1();              //通过该对象调用方法   
     new Demo01().test1();        //这是匿名对象实例化,并且直接调用方法

这是普通类的匿名对象创建,当然,匿名内部类创建方式也是一样的。

当一个方法的参数是一个接口时,在Java8之前我们有两种方式进行传参调用该方法

1、先创建这个接口的实现类去实现这个接口。new一个这个类的对象,然后将该对象作为参数传进方法中。

  
       //这是一个接口
       public interface UseInter {
 		  void operation();
   			}
   
   
   	//这是接口实现类
   	public class UseInterImpl implements UseInter {
   		@Override
   		public void operation() {
      			 System.out.println("这是通过接口实现类的方法重写的");
  				 }
   		}

//主方法
public class Test {
   public static void main(String[] args) {
       Test test = new Test();
       UseInter useInter = new UseInterImpl();  //new一个接口实现类的对象
       test.interTest(useInter);                //将这个对象作为参数传进去
   }

   void interTest(UseInter useInter) {  //这个方法需要UseInter接口作为参数
       useInter.operation();
   }
}

2、通过匿名内部类的方式直接在调该方法的参数里面去创建

test.interTest(new UseInter() {
            
            @Override
            public void operation() {//这里可以直接重写接口的抽象方法
                System.out.println("这是通过匿名内部类的方式");
            }
        });

是不是第二种方式比第一种简洁了许多。

在Java8出来后,出现的lambda表达式是匿名内部类的更简化版。

test.interTest(()-> {System.out.println("这是通过lambda表达式的方式");});

是不是很简洁优雅?,但是,不是所有的匿名内部类的方式都支持写成lambda表达式,lambda表达式的限定条件是该接口必须为函数式接口
函数式接口就是只有一个抽象方法的接口

lambda表达式的语法

如果该接口的抽象方法带一个参数,可以这样

test.interTest(a -> System.out.println("这是通过lambda表达式的方式" + a));

两个或多个参数。

test.interTest((int a,int b) -> System.out.println("这是通过lambda表达式的方式" + a + b));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值