有没有一种方法来重载JSONArray行为像循环中的常规列表?

我很好奇,如果有一种语法的方式来扩展JSONArray,那么我就可以在for(:)循环中使用它,因为我可以使用List。

所以,而不是必须这样做:

for(int i = 0; i< myJsonArray.length(); i++){ myJsonArray.getString(i); } 

我想要做

 for(String s : myJsonArray); 

我意识到我需要确保在上面的例子中,数组中的对象确实是一个string,但是鉴于JSONArrays只能处理几个不应该成为问题的types。

Solutions Collecting From Web of "有没有一种方法来重载JSONArray行为像循环中的常规列表?"

稍微调整一下所需的语法:

 for(String s : iterable(myJsonArray)) 

然后编写这样的iterable方法:

 public static Iterable<String> iterable(final JSONArray array) { return new Iterable<String> { Iterator<String> iterator() { return new Iterator<String> { int i = 0; boolean hasNext(){ return i < array.length(); } String next(){ return array.getString(i++); } void remove(){ throw new RuntimeException(); //implement if you need it } } } }; } 

我意识到我需要确保在上面的例子中,数组中的对象确实是一个string

那么不好像它不是一个String ,它将被强制为String无论如何。

这被称为增强for循环。 REF

我相信集合需要实现Iterable来获得这个function。 (或者你需要一个Iterable )这是你将如何做, 使用增强的for循环与你的类 。

JsonArray没有; 所以不,你不能:-)