Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 73 additions & 3 deletions gson/src/main/java/com/google/gson/JsonArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
* A class representing an array type in Json. An array is a list of {@link JsonElement}s each of
Expand All @@ -30,7 +32,7 @@
* @author Inderjeet Singh
* @author Joel Leitch
*/
public final class JsonArray extends JsonElement implements Iterable<JsonElement> {
public final class JsonArray extends JsonElement implements List<JsonElement> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll also want the RandomAccess marker interface.

private final List<JsonElement> elements;

/**
Expand Down Expand Up @@ -90,11 +92,11 @@ public void add(String string) {
*
* @param element the element that needs to be added to the array.
*/
public void add(JsonElement element) {
public boolean add(JsonElement element) {
if (element == null) {
element = JsonNull.INSTANCE;
}
elements.add(element);
return elements.add(element);
}

/**
Expand Down Expand Up @@ -370,4 +372,72 @@ public boolean equals(Object o) {
public int hashCode() {
return elements.hashCode();
}

public boolean isEmpty() {
return elements.isEmpty();
}

public boolean contains(Object o) {
return elements.contains(o);
}

public Object[] toArray() {
return elements.toArray();
}

public <T> T[] toArray(T[] a) {
return elements.toArray(a);
}

public boolean remove(Object o) {
return elements.remove(o);
}

public boolean containsAll(Collection<?> c) {
return elements.containsAll(c);
}

public boolean addAll(Collection<? extends JsonElement> c) {
return elements.addAll(c);
}

public boolean addAll(int index, Collection<? extends JsonElement> c) {
return elements.addAll(index, c);
}

public boolean removeAll(Collection<?> c) {
return elements.removeAll(c);
}

public boolean retainAll(Collection<?> c) {
return elements.retainAll(c);
}

public void clear() {
elements.clear();
}

public void add(int index, JsonElement element) {
elements.add(index, element);
}

public int indexOf(Object o) {
return elements.indexOf(o);
}

public int lastIndexOf(Object o) {
return elements.lastIndexOf(o);
}

public ListIterator<JsonElement> listIterator() {
return elements.listIterator();
}

public ListIterator<JsonElement> listIterator(int index) {
return elements.listIterator(index);
}

public List<JsonElement> subList(int fromIndex, int toIndex) {
return elements.subList(fromIndex, toIndex);
}
}