转载

Java基础学习心得 : java基础学习之十一:Java 8 lambda表达式初步第一回

这几天正在学关于Java lambda表达式,在这里就自己学习的一点心得体会写一上,就当我的读书笔记吧。

函数式编程在我的初步理解来看,就是相当于JavaScript中的Function类型。就是可以把方法当成参数进行传递。

lambda表达式有两个重要的结构:一、lambda表达式自身。二、函数式接口。

lambda表达式本质上就是匿名方法,主要用于为函数式接口所定义的方法提供一个实现。也就是为lambda表达式会提供一个匿类,因为些lambda有时候也会被称为闭包。

函数式接口,是指只提供有一个抽象方法定义的接口。在Java8之前接口中的方法是不提供方法实现的,但是在Java8中接口中的方法是可以提供默认实现的。所以函数式接口,在Java8之中的定义是:“只提供有一个没有默认实现的抽象方法的接口”。

一、lambda表达式的使用。

下面举一个例子:

//函数式接口   public interface Abc{        public double getValue(); }  Abc abc = ()->123.0; 

当调用abc.getValue();函数接返回123.0。

需要重点指出的是,lambda表达式在参数类型和数量、返回类型以及发生的异常都需要被函数式接口的方法所接受。

当需要为lambda表达式指定参数时,

(int n)->123.0*n; 

当然参数类型是可以不写的,这个可以通过函数式接口中定义的方法参数推断。当lambda表达式参数只有一个时括号是可以省略的。

n->123.0*n;   

这部分还有最后一点是,如果lambda表达式有两个参数时参数类型。如果省略都省略,不然都要写上。

  (n,b)->123.0*n*b;    (int n,int b)->123.0*n*b; 

但是这样写是错的:

(int n,b)->123.0*n*b; 

先写这些,剩下的等我看完书在写。^_^

原文  http://www.ituring.com.cn/article/216106
正文到此结束
Loading...