我如何使用对象形式作为参数初始化函数内部的数组

时间:2019-07-31 17:49:05

标签: java arrays function

我试图制作一个JSONArray反序列化器,但是每当要反序列化的输入对象为Array类型时,我都无法弄清楚如何以JSONArray的大小重新分配和设置新的Array。

我已经尝试过:

Object[] arr = new Object[size()];
for (int i = 0; i < size(); i++) arr[i] = myArrayList.get(i);
deserializedObject = arr;

我认为错误可能是我试图将Object []分配给int [],所以我将代码更改为并尝试了:

if (deserializedObject instanceof int[])
{
    int[] arr = new int[size()];
    for (int i = 0; i < size(); i++)
    {
        Object obj = myArrayList.get(i);
        if (!(obj instanceof Number))
            throw new RuntimeException("Tried to deserialize element of type: " + obj.getClass().getName() + " into an Int Array");
        int numb = ((Number)obj).intValue();
        arr[i] = numb;
    }
    deserializedObject = arr;
}

现在我认为这是不可能的...

/**
* @param deserializedObject An object to deserialize into from this JsonArray
*/
public void deserialize (Object deserializedObject)
{
    Class<? extends Object> objectClass = deserializedObject.getClass();

    if (objectClass.isArray())
    {
        Object[] arr = new Object[size()];
        for (int i = 0; i < size(); i++) arr[i] = myArrayList.get(i);
        deserializedObject = arr;
    }
    else if (deserializedObject instanceof Collection)
    {
        Collection<Object> collection = (Collection<Object>) deserializedObject;
        collection.clear();
        for (Object o : myArrayList) collection.add(o);
    }
    else
        throw new RuntimeException("Cannot deserialize to object: " + objectClass.getName() + " it is not an Array");
}

此功能的预期结果是JSONArray中的所有元素都将存储在deserializedObject参数中。 尽管输出是预定义的空数组

0 个答案:

没有答案