private List convertArrayToList()

in stetho/src/main/java/com/facebook/stetho/json/ObjectMapper.java [208:238]


  private List<Object> convertArrayToList(Field field, JSONArray array)
      throws IllegalAccessException, JSONException {
    if (List.class.isAssignableFrom(field.getType())) {
      ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType();
      Type[] types = parameterizedType.getActualTypeArguments();
      if (types.length != 1) {
        throw new IllegalArgumentException("Only able to handle a single type in a list " +
            field.getName());
      }
      Class arrayClass = (Class)types[0];
      List<Object> objectList = new ArrayList<Object>();
      for (int i = 0; i < array.length(); ++i) {
        if (arrayClass.isEnum()) {
          objectList.add(getEnumValue(array.getString(i), arrayClass));
        } else if (canDirectlySerializeClass(arrayClass)) {
          objectList.add(array.get(i));
        } else {
          JSONObject jsonObject = array.getJSONObject(i);
          if (jsonObject == null) {
            objectList.add(null);
          } else {
            objectList.add(convertValue(jsonObject, arrayClass));
          }
        }
      }
      return objectList;
    } else {
      throw new IllegalArgumentException("only know how to deserialize List<?> on field "
          + field.getName());
    }
  }