我想保存传递给方法的参数的值和类型。
这是我正在做的更大项目的要求。所以,现在我需要按照方法签名中声明的顺序保存参数的值和类型,就在方法体的第一行。但是,我不知道论点的数量。 因此,我正在寻找一种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了解它们的类型。但瓶颈是知道参数的值。
用另一种方式: 如果要将方法的参数值存储在列表中(在方法内声明),您会怎么做?由于参数数量很多,我们无法真正对该过程进行硬编码。 谢谢。
答案 0 :(得分:0)
我不确定你的问题,但我想我有一个答案。
您是否想要调用具有未知类型参数的函数?
按如下方式实施您的课程:
public class SomeClass {
public void someFuntion(Object... objects)
{
for (int i = 0; i < objects.length; i++) {
Object object = objects[i];
if(object != null)
System.out.println("Argument " + i + ": " + object.toString() + " (" + object.getClass().getSimpleName() + ")");
else
System.out.println("Argument " + i + ": null");
}
}
}
然后,使用以下命令调用此类:
SomeClass someClass = new SomeClass();
someClass.someFuntion("test", 8, new SomeClass());
输出将是:
参数0:test(String)
参数1:8(整数)
参数2:app.SomeClass@55f96302(SomeClass)
希望它可以帮到你!
编辑:如果要将结果序列化为JSON结构,可以将其存储为JSON数组,例如。
EDIT2 :或者将您的逗留方式替换为:
public void stay(Object... objects)
现在,您可以在stay方法中的 objects 数组中使用stay方法的参数。