当前位置: 首页 > article >正文

阅读springboot源码 记录

关于 :: 双冒号

用stream的map简洁提取id,类似代码1

// 代码1
List<String> Ids = list.stream().map(Student::getId).collect(Collectors.toList())

// 代码2
List<String> Ids = list.stream().map(use->{
    return use.getId();
}).collect(Collectors.toList())

之前以为代码1和代码2是一个意思,今天才意识到原来双冒号返回的是方法引用对象;

让我意识到这个问题的是看了SpringApplication.class源码的时候,有段代码很疑惑。

intitialize函数返回是null,在下面的foreach中,add的时候,都是null吗?

原来::返回的方法引用,并没有执行方法,而是方法作为参数传递下去。

// SpringApplication.class
private List<BootstrapRegistryInitializer> getBootstrapRegistryInitializersFromSpringFactories() {
        ArrayList<BootstrapRegistryInitializer> initializers = new ArrayList();
        this.getSpringFactoriesInstances(Bootstrapper.class)
        .stream().map((bootstrapper) -> {
            return bootstrapper::initialize;
        }).forEach(initializers::add);
         initializers.addAll(
            this.getSpringFactoriesInstances(BootstrapRegistryInitializer.class)
        );
        return initializers;
}

// Bootstrapper.class
public interface Bootstrapper {
    default void initialize(BootstrapRegistry registry) {
        this.intitialize(registry);
    }

    /** @deprecated */
    @Deprecated
    void intitialize(BootstrapRegistry registry);
}

多看一些源代码,让知识点串起来,进一步理解代码的


http://www.kler.cn/a/522142.html

相关文章:

  • 【Elasticsearch 】悬挂索引(Dangling Indices)
  • HTML特殊符号的使用示例
  • doris:HLL
  • 神经网络|(五)概率论基础知识-条件概率
  • 基于物联网设计的疫苗冷链物流监测系统
  • 基于物联网的火灾报警器设计与实现(论文+源码)
  • 动手学深度学习-卷积神经网络-3填充和步幅
  • Python GUI 开发 | Qt Designer — 工具介绍
  • TensorFlow 2基本功能和示例代码
  • 初阶1 入门
  • lightweight-charts-python 包 更新 lightweight-charts.js 的方法
  • EasyExcel使用详解
  • AI 编程工具—Cursor进阶使用 Rules for AI
  • AIP-132 标准方法:List
  • Bootstrap HTML编码规范
  • 【Super Tilemap Editor使用详解】(十四):工具栏菜单(Toolbar Menu)
  • gradle和maven的区别以及怎么选择使用它们
  • 【PyTorch】5.张量索引操作
  • UE求职Demo开发日志#13 完善所有伤害判定
  • 【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
  • AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言
  • 2025年寒假ACM训练赛1
  • Tailwind CSS 正式发布了 4.0 版本
  • 跨平台物联网漏洞挖掘算法评估框架设计与实现项目经费使用记录和参考文献
  • 除了layui.js还有什么比较好的纯JS组件WEB UI?在谷歌浏览上显示
  • 【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)