System.out.println(\"字典排序:\");
// 字段排序
Arrays.sort(plants);
System.out.println(Arrays.toString(plants));
// 长度排序
// Arrays.sort(plants (first second) -> first.length() - second.length());
Arrays.sort(plants Comparator.comparingInt(String::length));
System.out.println(\"长度排序:\");
System.out.println(Arrays.toString(plants));
Timer timer = new Timer(1000 event ->
System.out.println(\"The time is \" + LocalDateTime.now())
);
timer.start();
JOptionPane.showMessageDialog(null \"是否退出程序?\");
System.exit(0);
函数式接口函数式接口:只有一个抽象方法的接口
为什么函数式接口必须有一个接口?
在Java 8 中 , 可以在接口中定义默认方法 , 而这种方式不是抽象的或者接口重新声明Object(万物始祖)中的方法 , 这些方法都不在是抽象方法 。
常用函数式接口:
基本类型的函数式接口:
注:其中pq为 intlongdouble;PQ为IntLongDouble
标记注解@FunctionalInterface 用来标记接口为函数式接口 , 如果增加了一个非抽象方法 , 编译器会产生一个错误提示 , 另外javadoc页里也会指出这个接口为函数式接口 。
方法引用使用 :: 操作符分割方法名与对象或类名使用方法如下:
object::instanceMethod
Class::staticMethod
Class::instanceMethod
前两种情况中 , 方法引用等价于提供方法参数的lambda表达式 , System.out.println 等价于 x ->System.out.println(x)
第三种情况 , 第一个参数Class会成为方法的目标 , 如: String::compareToIgnoreCase 等价于 (x. y)-> x.compareToIgnoreCase(y)
如果有多个同名的重载方法 , 编译器就会尝试从上下文中找出你指定的那个一个方法
如:
Arrays.sort(plants Comparator.comparingInt(String::length));
也可以在方法引用中使用this , 例如: this.equlas 等价于 x -> this.equals(x);使用this作为目标 , 会调用给定方法的超类版本 。
在方法引用中还可以使用super形式如下:
super::instanceMethod
例子如下:
import java.awt.event.ActionEvent;
import javax.swing.Timer;
public class Greeter {
public void greet(ActionEvent actionEvent){
System.out.println(\"Hello world!\");
class TimedGreeter extends Greeter{
@Override
public void greet(ActionEvent actionEvent){
Timer timer = new Timer(1000 super::greet);
timer.start();
构造器引用构造器引用与方法引用类似 , 只不过方法名为new 。 例如: Person::new 是Person的构造器的一个引用 , 具体使用对象的哪个构造器由上下文决定 , 例如包含一个name的Person构造器如下:
ArrayList<String> names = ...;
Stream<Person> stream = names.stream.map(Person::new);
对于构造器引用 , 无法构造泛型T的数组 。
闭包lambda表达式中可以访问外围方法或类中的变量 , 但是lambda捕获的变量必须实际上是最终变量 , 即变量初始化之后就不会在为它赋新值 。
【苹果|Java8中的Lambda总结】import java.awt.Toolkit;
import java.awt.event.ActionListener;
import javax.swing.Timer;
- 苹果|对标苹果!蔚来手机公司成立:首款手机明年推出,售价或超7000元
- 苹果|下半年最值得关注的旗舰:华为苹果放大招,这款国产新机香爆了!
- 苹果|?“澎湃新闻”是何方神圣?
- 苹果|用过苹果13之后,也算是明白为什么苹果保值率这么高了
- 比 iPhone 贵!苹果神秘新品曝光:今年量产,价格破万
- 芯片|苹果商店里面有哪些冷门却很有意思的APP?
- 小米科技|旗舰新机大汇总,苹果华为小米神仙打架,一加新机抢先登场
- 机械键盘|没有想到!继“踢出”34家中国供应商之后,苹果又传来消息!
- 头戴式电竞耳机作为外设中的一员|rog棱镜s幻头戴式游戏耳机
- 芯片|安卓手机要崛起了,骁龙8Gen2和A16芯片主频曝光,高通超过苹果