反思 - 确定调用方法&来自DB值的参数

时间:2011-11-08 15:07:55

标签: java reflection

我开发了一个简单的POS系统,可以获得产品清单和产品清单。来自DB的按钮。包含所有按钮的桌子提供了绘制按钮所需的所有信息(即:尺寸,位置,标签,颜色以及与之相关的SKU)。

在原始版本中,所有'功能'按钮已被硬编码(即:数字1-9,支付,更改价格水平,结束班次等),但我想转向更可定制的设计,以便功能按钮也可以存储在数据库中。

我正在考虑以反射为基础做这件事。我有一个类作为接口,包含将出现在DB中的所有方法,然后将调用系统中的任何必要方法。但我不确定如何将其映射到数据库。

我非常确定每个方法都会采用0,1或2个参数,这些参数混合了boolean,int,double和char。

我已经为数据库提出了一个表示法,我可以解析它以确定我需要调用该方法的所有信息,例如为了支付销售费用,我会提出类似的内容

paySale[]

在数据库中,但如果客户给了我50美元,我想使用快速现金'按钮,那么方法调用将是

paySale[d 50]

或更复杂的东西,比如用支票支付

paySale[i 3, d 50]

其中int是付款方式类型(在这种情况下是检查),double是总数。

我的问题是,当我尝试使用getMethod()获取方法时,我无法弄清楚如何定义要查找的参数,例如double.class和int.class

有几种不同的方法需要调用,以处理价格水平变化,结束班次,支付账户/标签等事情,所以如果有更简单的方法来做到这一点,那么我'我愿意接受它!

再次感谢你们!

2 个答案:

答案 0 :(得分:1)

使用类似

的内容

class.getMethod(int.class, double.class, String.class)等。如果您的方法不是公开的,请使用getDeclaredMethod()

但老实说,你的解决方案听起来很奇怪。据我所知,你实际上保存在DB类型的脚本然后运行它。如果是这样,请使用随时可用的脚本引擎。例如,java 1.6及更高版本具有内置的JavaScript解释器(请参阅ScriptEngineManager)。您可以生成javascripts,然后运行它们。它比自己创建非常有限的脚本解释器容易得多。

答案 1 :(得分:1)

我和AlexR在一起。

虽然您正在做的事情肯定是可能,但您最好将可执行脚本存储在数据库中,并在应用程序的上下文中执行该脚本。

尽管如此,我怀疑系统是否具有这种灵活性的必要性:系统可能只需要一定数量的功能(命令)。看起来这些命令可以正常实现,并分配给特定的键/等。通过正常的配置机制。