You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8中如何将方法调用传递给另一个方法

解决方案

方法1:用方法引用(最简洁)

直接引用broker实例的changeSpecificEntity方法即可,它的参数和返回值刚好匹配BiFunction<K, D, D>的定义:

SpecificEntity result = changeAnyEntity(myTestKey, myTestData, broker::changeSpecificEntity);

方法2:用Lambda表达式

如果需要在调用前后加额外逻辑,或者想把逻辑写得更直白,用Lambda表达式:

SpecificEntity result = changeAnyEntity(myTestKey, myTestData, (key, data) -> broker.changeSpecificEntity(key, data));

方法3:显式创建BiFunction实例(适合理解原理)

手动实例化BiFunction接口,实现apply方法来定义myBrokerFunction:

// 先定义myBrokerFunction
BiFunction<SpecificKey, SpecificEntity, SpecificEntity> myBrokerFunction = new BiFunction<>() {
    @Override
    public SpecificEntity apply(SpecificKey key, SpecificEntity data) {
        return broker.changeSpecificEntity(key, data);
    }
};
// 再调用泛型方法
SpecificEntity result = changeAnyEntity(myTestKey, myTestData, myBrokerFunction);

额外说明

  • 方法引用是Lambda的语法糖,只是单纯调用已有方法的话,用它最省事。
  • 这三种方式本质都是把broker.changeSpecificEntity的逻辑包装成BiFunction类型的对象,传给泛型方法changeAnyEntity去执行。

内容的提问来源于stack exchange,提问作者snaydjoW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:05:34