【发布时间】:2019-12-10 12:56:01
【问题描述】:
我想为每种类型的触发方法生成方法引用,
我按键保存了函数接口的映射,函数会调用服务方法,但是我有一个问题,我无法使用方法引用定义参数,例如:
private Map<Type, Function<User, Boolean>> functionInterfaces = new HashMap<>();
{
functionInterfaces.put(Type.MY_TYPE1, MyService::myTypeMethod1);
functionInterfaces.put(Type.MY_TYPE2, MyService::myTypeMethod2);
functionInterfaces.put(Type.MY_TYPE3, MyService::myTypeMethod3);
}
目前我需要为每种类型创建方法
private boolean myTypeMethod1(Parameters parameters) {
return myGenericTypeMethod(parameters, Type.MY_TYPE1);
}
private boolean myTypeMethod2(Parameters parameters) {
return myGenericTypeMethod(parameters, Type.MY_TYPE2);
}
我使用apply调用函数:
if (map.containsKey(key)) {
map.get(key).apply(new Parameters.Builder().build());
}
我可以重构代码以使用单一方法吗?
【问题讨论】:
-
你不是在尝试重新发明语言提供的(糟糕的)东西,是吗?你想用这个“功能图”来完成什么?
-
@Kayaman 定义每个类型执行的函数(不是所有类型)
-
您想注册事件监听器?
-
那么你想引入一个抽象层来允许你将一个“键”映射到一个方法吗?这样做有什么好处?你打算用它做什么?这当然不是我推荐的架构方面的东西。
-
例如的签名是什么?
MyService::myTypeMethod1?
标签: java java-8 method-reference