java 8 - 声明要在 map 中使用的方法,稍后将值传递给该方法
java 8 - declare method to use in map, and pass the value to the method later on
我希望能够在 map 中声明方法以预先使用 BUT,指定要传递给函数的参数 NOT 在声明映射和实现 FunctionalInterface
时,而不是在使用它时。
示例 - 方法 DateTime.now().minusMinutes(int minutes)
。我想把这个方法放在 map 中并根据一些字符串键调用它,BUT 我想在使用它时指定要传递给该方法的 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 函数。
map.put("minutes", (mins) -> DateTime.now().minusMinutes(mins))
mins
是一个参数,对应于您的功能接口中的 value
。你可以随意称呼它; mins
只是一个建议。
我希望能够在 map 中声明方法以预先使用 BUT,指定要传递给函数的参数 NOT 在声明映射和实现 FunctionalInterface
时,而不是在使用它时。
示例 - 方法 DateTime.now().minusMinutes(int minutes)
。我想把这个方法放在 map 中并根据一些字符串键调用它,BUT 我想在使用它时指定要传递给该方法的 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 函数。
map.put("minutes", (mins) -> DateTime.now().minusMinutes(mins))
mins
是一个参数,对应于您的功能接口中的 value
。你可以随意称呼它; mins
只是一个建议。