JsonArray extends ArrayList<Object> { @Override public boolean equals(Object obj) { if (obj instanceof JsonArray) { JsonArray ary = (JsonArray) obj; int size = size(); if (size != ary.size()) { return false; } for (int i = 0; i < size; i++) { if (!stateList.get(i).equals(ary.stateList.get(i))) { return false; } else if (get(i) == null && ary.get(i) != null) { return false; } else if (get(i) == null && ary.get(i) == null) { continue; } else if (!get(i).equals(ary.get(i))) { return false; } } return true; } else { return false; } }  static JsonArray fromString(String json); static JsonArray fromParser(JsonPullParser parser); void toJson(Writer writer); Boolean getBooleanOrNull(int index); String getStringOrNull(int index); Long getLongOrNull(int index); Double getDoubleOrNull(int index); JsonArray getJsonArrayOrNull(int index); JsonHash getJsonHashOrNull(int index); @Deprecated State getState(int index); Type getType(int index); @Deprecated void add(int index, Object obj, State state); void add(int index, Object obj, Type type); @Override void add(int index, Object obj); void add(int index, String value); void add(int index, Boolean value); void add(int index, Double value); void add(int index, Float value); void add(int index, Byte value); void add(int index, Short value); void add(int index, Integer value); void add(int index, Long value); void add(int index, JsonArray value); void add(int index, JsonHash value); @Deprecated boolean add(Object obj, State state); boolean add(Object obj, Type type); @Override boolean add(Object obj); boolean add(String value); boolean add(Boolean value); boolean add(Double value); boolean add(Float value); boolean add(Byte value); boolean add(Short value); boolean add(Integer value); boolean add(Long value); boolean add(JsonArray value); boolean add(JsonHash value); @Override boolean addAll(Collection<? extends Object> args); @Override boolean addAll(int start, Collection<? extends Object> args); @Override void clear(); @Override Object clone(); @Override Object remove(int index); @Override boolean remove(Object obj); Object set(int index, Object obj, State state); @Override Object set(int index, Object obj); @Override Object[] toArray(); @Override T[] toArray(T[] arg0); @Override void trimToSize(); @Override boolean equals(Object obj); @Override boolean removeAll(Collection<?> args); @Override boolean retainAll(Collection<?> args); @Override String toString();  }
@Test public void equalsTest() { JsonArray jsonArray1 = new JsonArray(); JsonArray jsonArray2 = new JsonArray(); assertThat(jsonArray1.equals(jsonArray2), is(true)); jsonArray1.add("hoge"); assertThat(jsonArray1.equals(jsonArray2), is(false)); jsonArray2.add("hoge"); assertThat(jsonArray1.equals(jsonArray2), is(true)); }