Java8 lambda表达式初探


Android交流qq群号 29552133


这篇文章只包含lambda表达式的基础内容。
主要包括,lambda表达式的语法。
不涉及的Stream API及详细使用lambda表达式使用方式。

语法

  1. 参数 -> 表达式
  2. 如果负责计算的表达式无法一次写完,则可以使用方法的形式编写。
  3. 如果表达式没有参数,参数部分可以提供一个空的"()",类似不含参数的方法。
  4. 如果参数的类型是可被推导的,则可以省略参数的类型
  5. 如果参数只有一个,并且参数的类型可以被推导出来,可以省略"()"以及参数类型,只包含一个参数名。
  6. 类静态方法
1. (String first,String second) -> Integer.compare(first.length(),second.length())

2. (String first,String second) -> {
    if(first.length() < second.length()) return -1;
    else if(first.length() > second.length()) return 1;
    else return 0;
}

3. ()->System.out.println("不需要参数的lanmbda表达式")
4. Comparator<String> comp = 
    (first,second)//同(String first,String second)一样,只是因为类型可推导,所以不用写类型
     -> Integer.compare(first.length(),second.length())
     
5. EventHandler<ActionEvent> listener = 
    event ->//等同于(event),(ActionEvent event)
    System.out.println("省略参数类型及小括号")

6. String[] strings = new String[];
    Arrays.asList(strings).forEach(System.out::println);

    

方法引用

  1. 对象::实例方法
  2. 类::静态方法
  3. 类::实例方法

1,2两种情况等同于

System.out::println 等同于 System.out.println(x)
Math::pow 等同于 Math.pow(x,y)

第3种情况中,第一个参数回成为执行方法的对象。

String::compareToIgnoreCase 等同 (x,y) -> x.compareToIgnoreCase(y)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容