Ofe*_*mon 4 java lambda java-8 functional-interface
我想将方法指针存储在map中,以便根据字符串值执行它们.从我发现的,我可以Map<String, Runnable>用来做,但问题是我想从方法中获得返回值.
说我有这样的事情:
private Map<String, Runnable> timeUnitsMap = new HashMap<String, Runnable>() {{
timeUnitsMap.put("minutes", () -> config.getMinutesValues());
}}
Run Code Online (Sandbox Code Playgroud)
该方法config.getMinutesValues()来自另一个类.
我如何int value = timeUnitsMap.get("minutes").run();在地图中存储或存储其他内容(而不是Runnable)以便从地图中的函数中获取值?
Runnable不返回值.你应该使用Supplier或Callable代替.
Supplier和之间的主要区别Callable是Callable允许您抛出已检查的异常.然后,您必须在任何地方处理该异常的可能性Callable.Supplier你的用例可能更简单.
你需要改变你Map<String, Runnable>的Map<String, Supplier<Integer>>.lambda函数本身不需要改变.
@assylias在评论中指出你也可以使用Map<String, IntSupplier>.使用IntSupplier避免装箱你int的Integer.
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |