我是否应该使用类型为Object的Java for-each?

时间:2013-02-25 16:13:32

标签: java object foreach loops arrays

我有一个JSONArray的实例,我很好奇我是否可以使用for-each构造来按顺序处理每个元素。所以我试过了:

for( Object jsonObj: jsonArray ) {
  System.out.println("JSONArray element: '" + ((JSONObject)jsonObj).toString() + "'");
}

令我惊讶的是它有效。我以为我需要使用实现Iterable的类。

所以,如果你能回答我的初步问题(在JSONArray上使用for-each),那就太好了。也:

  • 第二个问题:为什么会有效?
  • 第3个问题:我是否应该对在运输代码中实际使用它有所怀疑?

全部谢谢!

2 个答案:

答案 0 :(得分:0)

java 1.5中引入了

The for-each loop语法。它的目的是从迭代器等明显的东西中清除你的代码,同时也减少了一些错误的可能性。

这种循环语句仅适用于Iterable类,以回答您的问题,因为JsonArray是实现Iterable接口。

关于您的代码,我认为它也有效,如果您确切地说jsonObjJSONObject的类型,并且它不仅仅是Object。通过这种方式,您可以从循环体中消除容易出错的类型转换。

答案 1 :(得分:0)

您可能知道,每个循环only works for Iterables and arrays

JSONArray doesn't implement iterable的原始json.org实现,但Gson implementation does,正如@Quirim和@BrianRoach所指出的那样。

json.org版本中有intend to implement it,但最后他们没有。{/ p>

回答你的3个问题:

  1. 您必须使用Gson或类似的实现 实现可迭代的JsonArray。
  2. 因为JsonArray是Iterable。
  3. 不,你不应该。