函数式接口、匿名内部类、lambda表达式

一、函数式接口

只有一个抽象方法的接口叫函数式接口,不能有两个,也不能有方法实现。

@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+" ");
        });
相关推荐
专注于大数据技术栈3 分钟前
java学习--Math 类常用方法
java·学习
Lisonseekpan9 分钟前
UUID vs 自增ID做主键,哪个好?
java·数据库·后端·mysql
利刃大大14 分钟前
【SpringBoot】配置文件 && 日志输出 && lombok
java·spring boot·后端
C+++Python19 分钟前
如何选择合适的锁机制来提高 Java 程序的性能?
java·前端·python
long31626 分钟前
类与对象 | 低级别设计 (LLD)
java·spring boot·学习·程序人生·spring·设计模式·学习方法
专注于大数据技术栈27 分钟前
java学习--String、StringBuilder、StringBuffer 的核心区别
java·学习
我命由我1234530 分钟前
Java 开发问题:包名 ‘com.my.compressimagetest‘ 与同名的类发生冲突
java·开发语言·学习·java-ee·intellij-idea·学习方法·intellij idea
⑩-36 分钟前
Sleep与Wait的区别
java·开发语言
程序员阿鹏37 分钟前
List和Set的区别
java·开发语言·数据结构·后端·list
CHANG_THE_WORLD37 分钟前
6.2.在汇编层面,数据本身没有类型
java·服务器·汇编