有没有办法重载JSONArray在循环中表现得像常规List?

Gen*_* S. 9 java arrays android json

我很好奇是否有一种扩展JSONArray的语法方法,以便我可以在for(:)循环中使用它,因为我可以使用List.

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

for(int i = 0; i< myJsonArray.length(); i++){
    myJsonArray.getString(i);
}
Run Code Online (Sandbox Code Playgroud)

我想要做

for(String s : myJsonArray);
Run Code Online (Sandbox Code Playgroud)

我意识到我需要确保在上面的例子中,数组中的对象确实是一个String,但是假设JSONArrays只能处理一些不应该有问题的类型.

wes*_*ton 5

稍微调整所需的语法:

for(String s : iterable(myJsonArray))
Run Code Online (Sandbox Code Playgroud)

然后写这样的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
             }
          }
       }
   };
}
Run Code Online (Sandbox Code Playgroud)

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

好吧不是真的好像它不是一个String, 反正它会被强制转移String.