lambda - java 8 - 声明要在 map 中使用的方法,稍后将值传递给该方法

标签 lambda functional-programming java-8 function-pointers functional-interface

我希望能够在 map 中声明方法以使用预先 BUT,在声明 map 和实现FunctionalInterface,而是在使用它时。

示例 - 方法 DateTime.now().minusMinutes(int minutes)。我想把这个方法放在 map 中并根据一些字符串键调用它,但是 我想在使用它时指定要传递给该方法的 int 分钟。这可能吗?

如果可能的话,我认为它看起来像这样:

@FunctionalInterface
interface TimeFrame {
    DateTime createTimeFrame(int value);
}

private Map<String, TimeFrame> map = new HashMap<String, TimeFrame>() {{
        map.put("minutes", () -> DateTime.now().minusMinutes());
}}

为了使用它,理想情况下,我想将 4 传递给 minusMinutes() 方法

DateTime date = map.get("minutes").createTimeFrame(4);

当然这不是编译,但想法是预先声明没有参数的方法,然后将参数传递给 minusMinutes()

这可以做到吗?

最佳答案

看来您缺少的是将 int 参数添加到 lambda 表达式中:

@FunctionalInterface
interface TimeFrame {
    DateTime createTimeFrame(int value);
}

...

map.put("minutes", i -> DateTime.now().minusMinutes(i));

现在

DateTime date = map.get("minutes").createTimeFrame(4);

应该可以。

关于lambda - java 8 - 声明要在 map 中使用的方法,稍后将值传递给该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206848/

相关文章:

java - 搜索功能接口(interface),不带参数,返回 boolean 值

pandas - 使用 lambda 以字符串开头时替换 DataFrame 列中的值

java - 在数组映射期间将 lambda 替换为 flatMap 中的方法引用

testing - 功能集成测试

java - 是否有针对Optional.ifPresentOrElse 的任何编码风格指南?

java - 构造 LocalDate 时自动移动月/日

c# - 如何为 EF Core 创建可重用的 'Contains' 表达式

templates - 推断模板中的 lambda 返回类型

c# - 排序列表 <DateTime> 降序

java - 使用另一个所有数组元素过滤数组 - Java 8