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
相关产品推荐
相关产品推荐

