函数式接口、匿名内部类、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+" ");
        });
相关推荐
画中有画22 分钟前
软件架构中质量属性(性能、安全、可扩展性)的权衡设计
java·运维·安全
Shaoxi Zhang39 分钟前
JAVA学习笔记035——对象和JSON格式
java·笔记·学习
赵丙双41 分钟前
CountDownLatch 源码分析
java·aqs·countdownlatch
余额瞒着我当琳1 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
thefool1122661 小时前
翻转二叉树
java
喜欢打篮球的普通人2 小时前
LLVM Backend Lowering 从入门到实战:把 IR 变成机器码的完整链路
android·java·数据库
FL16238631293 小时前
室内易燃物识别易燃评估室内易燃程度识别分割数据集labelme格式1015张85类别
java·服务器·前端
jufeng13073 小时前
【系列:TDengine 工业物联网实战:从零搭起可运行系统 · 第 8 篇】
java·spring boot·时序数据库·tdengine
程序员贺加贝3 小时前
轻制造SaaS的生产闭环建模-BOM工单领料报工质检与入库
java·设计模式·架构
敲个大西瓜5 小时前
Spring Could Alibaba 核心面试题
java·后端·spring