java更改变量参数值

时间:2015-03-22 10:18:58

标签: java json

我不确定我是否在做一些愚蠢的错误,我想要实现的是我有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行为相反,它是否与变量参数有关。 为了清楚起见,我在函数末尾调试了代码和值。

1 个答案:

答案 0 :(得分:3)

objects数组在函数调用期间创建,之后被丢弃。如果需要在调用后访问数组中的值,则需要显式创建数组。