clear()方法是否为Object引用的空值?

时间:2015-04-14 00:09:12

标签: java json object

clear()方法是否清空JSON对象引用的值?

例如:

JSONObject obj = new JSONObject();
JSONObject objtemp = new JSONObject();
JSONArray arr = new JSONArray();
String[] details;
for (int i = 0; i < tempvals.length; ++i) {
  objtemp.clear();
  details = tempvals[i].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
  objtemp.put("inspectionDate", details[7]);
  objtemp.put("code", details[9]);
  objtemp.put("description", details[10]);
  objtemp.put("score", details[12]);
  objtemp.put("grade", details[13]);
  objtemp.put("gradeDate", details[14]);
  arr.add(objtemp);
}
obj.put("violationDetails", arr);
arr.clear();

执行上述代码后,上述对象obj为空。我使用clear方法的目的是防止在每次迭代时创建新对象。

1 个答案:

答案 0 :(得分:1)

是的,它清除了参考。你只有一个参考。然后清除它,并向其添加数据(但您只有一个实例)。你需要像

这样的东西
// JSONObject objtemp = new JSONObject();
for (int i = 0; i < tempvals.length; ++i) {
  // objtemp.clear(); // <-- only one objtemp.
  JSONObject objtemp = new JSONObject();
  details = tempvals[i].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
  objtemp.put("inspectionDate", details[7]);
  objtemp.put("code", details[9]);
  objtemp.put("description", details[10]);
  objtemp.put("score", details[12]);
  objtemp.put("grade", details[13]);
  objtemp.put("gradeDate", details[14]);
  arr.add(objtemp);
}
obj.put("violationDetails", arr);
// arr.clear(); // <-- would empty arr in `obj`.