代码拉取完成,页面将自动刷新
JAVA8
Lambda
Lambda表达式的基本结构
(param1,param2,param3) -> {
代码...
}
1.Lambda表达式主要用来定义行内执行的方法类型接口
2.Lambda表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力
变量作用域
1.lambda表达式只能引用标记了final的外层局部变量,这就是说不能在lambda内部修改定义在域外的局部变量,否则会编译错误.
lambda表达式的局部变量可以不用声明为final,但是必须不可被后面的代码修改(隐性设置为final)
2.也可以直接在lambda表达式中访问外层的局部变量.
函数式接口
1.如果一个接口只有一个抽象方法,但是可以有多个非抽象方法,那么该接口就是一个函数式接口
2.如果我们在某个接口上声明了FunctionInterface注解,那么编译器就会按照函数式接口的定义来要求该接口
3.如果某个接口只有一个抽象方法,但我们并没有给该接口声明FunctionInterface注解,那么编译器依旧会将该接口看作是函数式接口
在Java8以前,已有大量函数式接口形式的接口(接口中只存在一个抽象方法),只是没有强制声明。例如:
java.lang.Runnable
java.util.concurrent.Callable
java.security.PrivilegedAction
java.io.FileFilter
java.nio.file.PathMatcher
java.lang.reflect.InvocationHandler
java.beans.PropertyChangeListener
java.awt.event.ActionListener
javax.swing.event.ChangeListener
方法引用
方法引用实际上是个Lambda表示式的一种语法糖
我们可以将方法引用看作是一个函数指针,function pointer
方法引用分4类
1.类名::静态方法名
System.out::println
2.引用名::实例方法名
student::test
3.类名::实例方法名
public int compareByScore(Student student){
return this.getScore() - student.getScore();
}
4.构建方法引用:类名::new
流
流由三部分组成
1.源
2.零个或多个中间操作
3.终止操作
流操作的类型
1.惰性求值
2.及早求值
函数式方法传递的是行为,面向对象编程传递的是数据
430626a273r.cdb@sina.cn
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。