目前,我有一堆实现了Java的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...
}
你明白了。
这对我来说很好,但是现在我需要一个从key到function的运行时可访问映射;不是每个功能 其实 返回一个String(一些返回void),我需要动态访问每个具有键的类中每个函数的返回类型(使用反射)。我已经有一位了解所有钥匙的经理,但是 不 从键到功能的映射。
我的第一直觉是使用替换此映射 if-else
用a语句 Map<String, Function>
就像我在Javascript中所做的那样。但是,Java不支持一流的功能,所以我在那里运气不好。我可能会挖掘出第三方库,让我可以使用一流的功能,但我还没有看到,我怀疑我需要一个全新的库。
我也想过把这些 String
键入数组并使用反射按名称调用方法,但我看到此方法有两个缺点:
- 我的键必须与方法命名相同 - 或者以特定的,一致的方式命名,以便将它们映射到方法名称。
- 这似乎比Way慢
if-else
我现在的陈述。效率是一个令人担忧的问题,因为这些方法往往会被频繁调用,我希望尽量减少不必要的开销。
TL; DR: 我正在寻找一种干净,最小的开销方式来映射 String
某种程度的 Function
我可以调用和调用的对象(类似) getReturnType()
上。我特别介意使用第三方库 真 符合我的需要。我也不介意使用反射,尽管我非常希望每次进行方法查找时都避免使用反射 - 可能会使用一些结合了 Map
用反射。
关于获得我想要的好方法的想法?干杯!