【发布时间】:2017-07-19 04:19:50
【问题描述】:
我想保存传递给方法的参数的值和类型。
这是我正在做的一个更大项目的要求。所以,目前我需要保存参数的值和类型,按照它们在方法签名中声明的顺序,就在方法体的第一行。但是,我不知道参数的数量。 因此,我正在寻找一种 JAVA 技术,该技术将其所有方法参数及其对应值纳入其中。
参数的数量可能非常多,而且参数的名称是未知的。
如果这不能直接发生,任何关于如何做到这一点的建议都会有所帮助。
public void stay(String temp1, int temp2, double temp3){
//**--code to save the values of temp1, temp2, temp3 somehow--**
//method body that will change the value of parameters
}
编辑 1:
上面提到的stay 方法可以是任何东西,我不能显式更改它的代码。我正在使用检测在方法主体中添加几行代码。这样,我想在方法体中添加某些代码段(逻辑上在开头),以保存参数的值。可以以 JSON 格式保存。使用 javassist 可以知道它们的类型。但瓶颈是知道参数的值。
换一种说法: 如果要将方法的参数值存储在列表中(在方法内部声明),您会怎么做?由于参数的数量可能很大,我们不能真正对过程进行硬编码。 谢谢。
【问题讨论】:
-
您所说的“保存”或“登记”到底是什么意思?不能只将它们存储在类级变量中吗?
-
我想在方法体中更改参数值之前保存它们。我想将参数的值存储在一个列表中,这样,如果我想在将来某个时候重新调用该方法,我知道按指定顺序的参数类型及其保存的值,我可以调用该方法而无需在调用方法的地方到达程序。即使要将它们存储在类级别变量中,我也必须知道参数的数量以及它们的名称。我说清楚了吗?
-
你怎么会不知道参数的数量是多少,因为方法的参数数量和类型是在编译时设置的?那么作为参数传递的对象呢?您需要将它们保存为原始状态吗?
-
所以基本上所考虑的方法将来自完全不同的来源。如果需要,我的程序应该对其进行调试。我错误地提到计数将不知道。我可以使用反射知道计数。我的坏那里。但是,我想保存这些参数的值。如果它们不是原始类型,它们将被序列化。传递给方法的某些参数(原始和非原始),需要作为方法体的第一步保存(或序列化为 JSON 对象)。
标签: java methods reflection parameters instrumentation