目前,我有一组Java类来实现
Processor
接口,意味着它们都有一个
processRequest(String key)
方法。我们的想法是每个班级都有几个(比如,<10)成员
Strings
,并且每一个都通过
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...
}
你明白了。
这对我来说很好,但是现在我需要一个从键到函数的运行时可访问的映射;不是每个函数
事实上
返回一个字符串(一些返回void),我需要动态访问每个类中每个函数的返回类型(使用反射),每个类都有一个键。我已经有一个经理知道所有的钥匙,但是
不
从键到函数的映射。
我的第一反应是用
if-else
带有
Map
就像我在javascript中所做的那样。但是,Java不支持一流的功能,所以我运气不好。我可能会挖一个第三方库,让我使用一流的功能,但我还没有看到任何,我怀疑我需要一个完整的新库。
我还想把这些
String
键到数组中并使用反射按名称调用方法,但我看到此方法的两个缺点:
我的键必须与方法命名相同,或者以一种特定的、一致的方式命名,这样就很容易将它们映射到方法名。
这似乎比
如果不是的话
我现在有陈述。效率是一个值得关注的问题,因为这些方法经常被调用,我希望最小化不必要的开销。
TL;医生:
我正在寻找一个干净的,最小开销的方法来映射
弦
某种程度上
Function
我可以调用的对象(类似于)
getReturnType()
在。我不介意用第三方图书馆,如果它
真正地
符合我的需要。我也不介意使用反射,尽管我强烈希望每次执行方法查找时都避免使用反射-可能使用一些结合了
Map
带着反思。
想一个好的方法得到我想要的?干杯!