我不确定我是否在做一些愚蠢的错误,我想要实现的是我有JSON列表,我想根据传递给函数的变量参数将它们转换为多个对象。
Unit u1= new Unit();
User us = new User();
//calling funtion
StaticUtil.MagicJsonMapper(list, u1,us);
System.out.println(u1.getUnitName()); //place -1 unitName is null after function call
在静态类中我创建了一个函数
@SuppressWarnings("rawtypes")
public static void MagicJsonMapper(List list,Object... objects){
if(list.size()!= objects.length){
//TODO
System.out.println("parame`ter mismatch");
return;
}
int i=0;
ObjectMapper mapper = new ObjectMapper();
for(Object object : objects){
if(list.get(i) instanceof List){
MagicJsonMapper((List)list.get(i),object);
}
else{
objects[i] = mapper.convertValue(list.get(i), object.getClass());
}
i++;
}
//place -2 "objects" contains proper value of unitname
}
问题是在完成运行此方法后,我仍未在参数中获得正确的值。这意味着参数值不会保留,因为与普通的java行为相反,它是否与变量参数有关。 为了清楚起见,我在函数末尾调试了代码和值。
答案 0 :(得分:3)
objects
数组在函数调用期间创建,之后被丢弃。如果需要在调用后访问数组中的值,则需要显式创建数组。