函数式接口、匿名内部类、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+" ");
        });
相关推荐
Tirson Yang17 分钟前
西安java面试总结1
java·面试
小猫咪怎么会有坏心思呢18 分钟前
华为OD机试-猴子爬山-dp(JAVA 2025A卷)
java·算法·华为od
保持学习ing21 分钟前
SpringBoot 前后台交互 -- CRUD
java·spring boot·后端·ssm·项目实战·页面放行
啾啾Fun1 小时前
Java反射操作百倍性能优化
java·性能优化·反射·缓存思想
20岁30年经验的码农1 小时前
若依微服务Openfeign接口调用超时问题
java·微服务·架构
曲莫终2 小时前
SpEl表达式之强大的集合选择(Collection Selection)和集合投影(Collection Projection)
java·spring boot·spring
ajassi20002 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
q567315232 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
kaikaile19952 小时前
解密Spring Boot:深入理解条件装配与条件注解
java·spring boot·spring
守护者1702 小时前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习