我希望能够在 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/