java 映射函数_如何将String映射到Java中的函数?

目前,我有一堆实现Processor接口的

Java类,这意味着它们都有一个processRequest(String key)方法.这个想法是,每个类都有一些(比如,< 10)成员的字符串,并且每个类都通过processRequest方法映射到该类中的一个方法,如下所示:

class FooProcessor implements Processor

{

String key1 = "abc";

String key2 = "def";

String key3 = "ghi";

// and so on...

String processRequest(String key)

{

String toReturn = null;

if (key1.equals(key)) toReturn = method1();

else if (key2.equals(key)) toReturn = method2();

else if (key3.equals(key)) toReturn = method3();

// and so on...

return toReturn;

}

String method1() { // do stuff }

String method2() { // do other stuff }

String method3() { // do other other stuff }

// and so on...

}

你得到这个想法

这对我来说工作正常,但现在我需要一个从键到功能的运行时可访问的映射;不是每个函数实际上都返回一个String(一些返回void),我需要动态地访问每个类中有一个键的每个函数的返回类型(使用反射).我已经有一个知道所有密钥的管理员,但没有从键到功能的映射.

我的第一本能是使用if-else语句替换这个映射,并使用Map< String,Function>像Javascript一样.但是,Java不支持一流的功能,所以我没有运气.我可以挖一个可以让我处理一流功能的第三方库,但是我还没有看到,我怀疑我需要一个全新的库.

我还想到将这些String键放入一个数组中,并使用反射按名称调用方法,但是我看到这个方法有两个缺点:

>我的密钥必须与方法命名相同 – 或者以特定的一致方式命名,以便将它们映射到方法名称.

>这似乎比现在的if-else语句慢.效率是一个令人担忧的问题,因为这些方法往往会被频繁地调用,我想减少不必要的开销.

TL; DR:我正在寻找一个干净,最小的开销方式,将String映射到某种可以调用(和类似)getReturnType()的Function对象.如果真的适合我的需要,我不会特别想到使用第三方库.我也不介意使用反射,虽然我强烈希望避免每次使用反射来进行方法查找 – 也许使用一些缓存策略来组合地图与反射.

想到一个很好的方式来获得我想要的?干杯!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值