Java 指定为对象属性时未保留数组元素

Java 指定为对象属性时未保留数组元素,java,arrays,oop,hashmap,Java,Arrays,Oop,Hashmap,我创建了一个数组实例shortFacilitiesArray,通过添加其他值来修改数组中的一组现有值。但是,当我将实例数组设置为对象的属性时,所有数据都将丢失。我的代码主要如下: if(hotelMap.containsKey(hotelID)) { JSONArray shortFacilitiesJSON = jsonObj.getJSONArray("shortFacilities"); String[] shortFacilitiesArray = (hotelMap

我创建了一个数组实例shortFacilitiesArray,通过添加其他值来修改数组中的一组现有值。但是,当我将实例数组设置为对象的属性时,所有数据都将丢失。我的代码主要如下:

if(hotelMap.containsKey(hotelID)) {

    JSONArray shortFacilitiesJSON = jsonObj.getJSONArray("shortFacilities"); 
    String[] shortFacilitiesArray = (hotelMap.get(hotelID)).getFacilitiesShort();
    shortFacilitiesArray = new String[shortFacilitiesJSON.length()];
    for (int i=0;i<shortFacilitiesJSON.length();i++) {
            shortFacilitiesArray[i] = shortFacilitiesJSON.getString(i);             
    }

    hotelMap.get(hotelID).setFacilitiesShort(shortFacilitiesArray);
}
例如: 如果我的缺点是{停车,吹风机}
,将其设置为映射中对象的数组后,它将输出null,null。

如果没有其他上下文,我的赌注将是shortFacilitiesJson.GetString可能返回null,因此将最初填充的数组设置为null数组。您可以通过测试shortFacilitiesArray以字符串开头的场景来验证这一点。在这种情况下,在运行程序后,shortFacilitiesArray应包含除第一个元素外的所有空值,该元素应与以前的字符串相同。

请创建一个实例来说明问题。@JohnKugelman感谢您的评论。我清除了问题中的代码。问题的最后一句话是我的代码。String[]shortFacilitiesArray=hotelMap.gethotelID.getFacilitiesShort;shortFacilitiesArray=新字符串[shortFacilitiesJSON.length];为什么要读取数据,然后重新评估数组?@dehasi我有一个案例,它将一些信息从附加变量复制到变量中,但这与问题无关。我只想访问数组,修改它,然后分配修改后的版本。感谢您减少了代码量。但它仍然不完整:我无法将它复制到文本编辑器并运行它,因为缺少太多上下文。A应该是最小的和完整的。不幸的是,情况并非如此。我测试了这样一个场景,尽管shortFacilitiesJson.GetString返回一个字符串,而不是null。您提到的第二个例子存在于我代码的另一部分中,结果确实是String,null,null,null。。。但是,这不是因为shortFacilitiesJson.GetString。您可以使用setFacilitiesShort方法共享代码吗?public void setFacilitiesShortString[]facilities{this.facilitiesShort=facilitiesShort;}在这种情况下,setFacilitiesShort方法似乎是多余的。字符串数组是引用类型,因此当您更改字符串数组的内容时,它也应自动更新对象成员。True。然而,我的代码应该在冗余的情况下工作吗?