android lambda语法简述


android lambda语法简述


本篇文章简述lambda常用语法 。

文章分为3部分:  简介 语法  附录


一简介:什么是lambda

oracle官方的说法是:  



大意是

Lambda提供了一个清晰和简洁的方式来表示一个方法的接口使用的表达式。

Lambda表达式更容易遍历,过滤(filter)。此外,新的并发功能提高在多核环境中的性能



二语法

(1)      

   ()->{}

普通方法图例:


语法的意思:

()       代表参数部分,参数名称   ( 同上图的 parameter list )

->     箭头   ( 新出的 )

{ }     方法的主体   ( 同上图的 method body )


下面会举三个lambda语法例子   分别是:  无参数 、 1个参数 、 多个参数


1.1 举个例子(无参数):

public class RunnableTest {
   public static void main(String[] args) {
     
     System.out.println("=== RunnableTest ===");
     
     // Anonymous Runnable
     Runnable r1 = new Runnable(){
       
       @Override
       public void run(){
         System.out.println("Hello world one!");
         System.out.println("Hello world one!");
       }
     };
     
     // Lambda Runnable
     Runnable r2 = () -> {
     	System.out.println("Hello world two!");
	 	  System.out.println("Hello world two!");
     };
     
     // Run em!
     r1.run();
     r2.run();
     
   }
}


代码中使用了2个Runnable 对象 r1  和 r2 

r1 为使用lambda之前,    r2  为使用lambda之后  .    


对比r1和r2   :          

r2 对  r1进行了简化 , 去掉了new Runnable 并将r1 的   run() {   }       替换为    ()   -> {}




1.2 举个带参数例子(android 例子)


使用lambda前 onclick(View view) {   }     使用lambda简化后  (view) -> { }


1.3 多参数例子(android 例子)



如果大括号内的代码只有1行 可以将大括号也简化掉   如下图中的  System.out.print("多参数3")





(2)    

   ::

该语法由双冒号组成

语法  ::  是对 () -> { } 方式的简化

举个例子



观察  func4   可以发现:  

Func3<Object, String, String, String> func4 = (o, s, s2) -> Utils.getDemo(o, s, s2);


方法的右侧 , 参数list ( o , s , s2  ) 完整的传递给了 箭头右侧的方法  Utils.getDemo(o, s, s2);  


------

再观察 func5 可以发现

当参数部分(parameter list)  与  方法的主体(method body)  中函数接收的参数相同且只有一行代码时 可以简化为 :: 形式。

例如func5 的

Utils::getDemo;



:: 语法在使用有如下几种情况


静态方法引用:ClassName::staticMethodName

实例上的实例方法引用:instanceReference::methodName
构造方法引用:ClassName::new 

三附录


oracle文档:

android studio中使用lambda语法参考文章:

其它参考blog:


//  ┏┓   ┏┓
//┏┛┻━━━┛┻┓
//┃       ┃
//┃   ━   ┃
//┃ ┳┛ ┗┳ ┃
//┃       ┃
//┃   ┻   ┃
//┃       ┃
//┗━┓   ┏━┛
//   ┃   ┃   神兽保佑
//   ┃   ┃   代码无BUG!
//   ┃   ┗━━━┓
//   ┃       ┣┓
//   ┃       ┏┛
//   ┗┓┓┏━┳┓┏┛
//     ┃┫┫ ┃┫┫
//     ┗┻┛ ┗┻┛

谢谢

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值