Java8 lambda表达式初探

作者: yftx_ | 来源:发表于2016-12-01 15:59 被阅读105次

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)

相关文章

网友评论

    本文标题:Java8 lambda表达式初探

    本文链接:https://www.haomeiwen.com/subject/srgxmttx.html