一、函数式接口
只有一个抽象方法的接口叫函数式接口,不能有两个,也不能有方法实现。
@FunctionalInterface注解标记,在idea中可以用这个注解验证是不是函数式接口。实现函数式接口可以转成lambda表达式。
二、匿名内部类
匿名内部类的格式:父类/接口 对象 = new 父类/接口(){ 重写父类/接口中的方法 };
Thread t=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("线程t");
}
});
继承了java.lang下的Thread,重写了Thread方法。
三、lambda表达式
简化代码,常用的lambda表达式简写方式
1.代替实现函数式接口(idea可以自动转换)
Thread t=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("线程t");
}
});
lambda表达式:
Thread t=new Thread(() -> System.out.println("线程t"));
常用的场景还有集合排序:
//集合排序:实现Comparator接口
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
Collections.sort(list, (o1, o2) -> {return o1-o2;});
集合遍历
for (Integer integer : list) {
System.out.print(integer);
}
list.forEach(s->{
System.out.print(s+" ");
});