diff --git a/examples/android-proguard-example/src/com/google/gson/examples/android/GsonProguardExampleActivity.java b/examples/android-proguard-example/src/com/google/gson/examples/android/GsonProguardExampleActivity.java index bd544311..3ac740e4 100644 --- a/examples/android-proguard-example/src/com/google/gson/examples/android/GsonProguardExampleActivity.java +++ b/examples/android-proguard-example/src/com/google/gson/examples/android/GsonProguardExampleActivity.java @@ -53,7 +53,7 @@ public class GsonProguardExampleActivity extends Activity { } private Cart buildCart() { - List lineItems = new ArrayList(); + List lineItems = new ArrayList<>(); lineItems.add(new LineItem("hammer", 1, 12000000, "USD")); return new Cart(lineItems, "Happy Buyer", "4111-1111-1111-1111"); } diff --git a/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java b/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java index 98bf845d..e6a07f14 100644 --- a/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java +++ b/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java @@ -48,7 +48,7 @@ public final class GraphAdapterBuilder { private final ConstructorConstructor constructorConstructor; public GraphAdapterBuilder() { - this.instanceCreators = new HashMap>(); + this.instanceCreators = new HashMap<>(); this.constructorConstructor = new ConstructorConstructor(instanceCreators, true, Collections.emptyList()); } public GraphAdapterBuilder addType(Type type) { @@ -80,7 +80,7 @@ public final class GraphAdapterBuilder { static class Factory implements TypeAdapterFactory, InstanceCreator { private final Map> instanceCreators; - private final ThreadLocal graphThreadLocal = new ThreadLocal(); + private final ThreadLocal graphThreadLocal = new ThreadLocal<>(); Factory(Map> instanceCreators) { this.instanceCreators = instanceCreators; @@ -121,7 +121,7 @@ public final class GraphAdapterBuilder { @SuppressWarnings("unchecked") // graph.map guarantees consistency between value and T Element element = (Element) graph.map.get(value); if (element == null) { - element = new Element(value, graph.nextName(), typeAdapter, null); + element = new Element<>(value, graph.nextName(), typeAdapter, null); graph.map.put(value, element); graph.queue.add(element); } @@ -178,7 +178,7 @@ public final class GraphAdapterBuilder { currentName = name; } JsonElement element = elementAdapter.read(in); - graph.map.put(name, new Element(null, name, typeAdapter, element)); + graph.map.put(name, new Element<>(null, name, typeAdapter, element)); } in.endObject(); } else { @@ -242,7 +242,7 @@ public final class GraphAdapterBuilder { * The queue of elements to write during serialization. Unused during * deserialization. */ - private final Queue queue = new LinkedList(); + private final Queue queue = new LinkedList<>(); /** * The instance currently being deserialized. Used as a backdoor between diff --git a/extras/src/main/java/com/google/gson/interceptors/InterceptorFactory.java b/extras/src/main/java/com/google/gson/interceptors/InterceptorFactory.java index 4ea80c9b..51916c22 100644 --- a/extras/src/main/java/com/google/gson/interceptors/InterceptorFactory.java +++ b/extras/src/main/java/com/google/gson/interceptors/InterceptorFactory.java @@ -19,7 +19,7 @@ public final class InterceptorFactory implements TypeAdapterFactory { } TypeAdapter delegate = gson.getDelegateAdapter(this, type); - return new InterceptorAdapter(delegate, intercept); + return new InterceptorAdapter<>(delegate, intercept); } static class InterceptorAdapter extends TypeAdapter { diff --git a/extras/src/main/java/com/google/gson/typeadapters/PostConstructAdapterFactory.java b/extras/src/main/java/com/google/gson/typeadapters/PostConstructAdapterFactory.java index 36e06da2..450ebbab 100644 --- a/extras/src/main/java/com/google/gson/typeadapters/PostConstructAdapterFactory.java +++ b/extras/src/main/java/com/google/gson/typeadapters/PostConstructAdapterFactory.java @@ -38,7 +38,7 @@ public class PostConstructAdapterFactory implements TypeAdapterFactory { if (m.isAnnotationPresent(PostConstruct.class)) { m.setAccessible(true); TypeAdapter delegate = gson.getDelegateAdapter(this, type); - return new PostConstructAdapter(delegate, m); + return new PostConstructAdapter<>(delegate, m); } } } diff --git a/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java b/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java index c11ca836..3e8aebcf 100644 --- a/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java +++ b/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java @@ -135,8 +135,8 @@ import com.google.gson.stream.JsonWriter; public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { private final Class baseType; private final String typeFieldName; - private final Map> labelToSubtype = new LinkedHashMap>(); - private final Map, String> subtypeToLabel = new LinkedHashMap, String>(); + private final Map> labelToSubtype = new LinkedHashMap<>(); + private final Map, String> subtypeToLabel = new LinkedHashMap<>(); private final boolean maintainType; private RuntimeTypeAdapterFactory(Class baseType, String typeFieldName, boolean maintainType) { @@ -154,7 +154,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * {@code maintainType} flag decide if the type will be stored in pojo or not. */ public static RuntimeTypeAdapterFactory of(Class baseType, String typeFieldName, boolean maintainType) { - return new RuntimeTypeAdapterFactory(baseType, typeFieldName, maintainType); + return new RuntimeTypeAdapterFactory<>(baseType, typeFieldName, maintainType); } /** @@ -162,7 +162,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * typeFieldName} as the type field name. Type field names are case sensitive. */ public static RuntimeTypeAdapterFactory of(Class baseType, String typeFieldName) { - return new RuntimeTypeAdapterFactory(baseType, typeFieldName, false); + return new RuntimeTypeAdapterFactory<>(baseType, typeFieldName, false); } /** @@ -170,7 +170,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * the type field name. */ public static RuntimeTypeAdapterFactory of(Class baseType) { - return new RuntimeTypeAdapterFactory(baseType, "type", false); + return new RuntimeTypeAdapterFactory<>(baseType, "type", false); } /** @@ -210,10 +210,8 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { } final TypeAdapter jsonElementAdapter = gson.getAdapter(JsonElement.class); - final Map> labelToDelegate - = new LinkedHashMap>(); - final Map, TypeAdapter> subtypeToDelegate - = new LinkedHashMap, TypeAdapter>(); + final Map> labelToDelegate = new LinkedHashMap<>(); + final Map, TypeAdapter> subtypeToDelegate = new LinkedHashMap<>(); for (Map.Entry> entry : labelToSubtype.entrySet()) { TypeAdapter delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); labelToDelegate.put(entry.getKey(), delegate); diff --git a/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java b/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java index 43fc6b69..3b2425ec 100644 --- a/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java +++ b/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java @@ -93,9 +93,9 @@ public final class GraphAdapterBuilderTest { Type listOfListsType = new TypeToken>>() {}.getType(); Type listOfAnyType = new TypeToken>() {}.getType(); - List> listOfLists = new ArrayList>(); + List> listOfLists = new ArrayList<>(); listOfLists.add(listOfLists); - listOfLists.add(new ArrayList()); + listOfLists.add(new ArrayList<>()); GsonBuilder gsonBuilder = new GsonBuilder(); new GraphAdapterBuilder() @@ -187,7 +187,7 @@ public final class GraphAdapterBuilderTest { static class Company { final String name; - final List employees = new ArrayList(); + final List employees = new ArrayList<>(); Company(String name) { this.name = name; } diff --git a/gson/src/main/java/com/google/gson/Gson.java b/gson/src/main/java/com/google/gson/Gson.java index 225f7b99..62d5ca86 100644 --- a/gson/src/main/java/com/google/gson/Gson.java +++ b/gson/src/main/java/com/google/gson/Gson.java @@ -128,9 +128,9 @@ public final class Gson { * The proxy is wired up once the initial adapter has been created. */ private final ThreadLocal, FutureTypeAdapter>> calls - = new ThreadLocal, FutureTypeAdapter>>(); + = new ThreadLocal<>(); - private final Map, TypeAdapter> typeTokenCache = new ConcurrentHashMap, TypeAdapter>(); + private final Map, TypeAdapter> typeTokenCache = new ConcurrentHashMap<>(); private final ConstructorConstructor constructorConstructor; private final JsonAdapterAnnotationTypeAdapterFactory jsonAdapterFactory; @@ -237,7 +237,7 @@ public final class Gson { this.numberToNumberStrategy = numberToNumberStrategy; this.reflectionFilters = reflectionFilters; - List factories = new ArrayList(); + List factories = new ArrayList<>(); // built-in type adapters that cannot be overridden factories.add(TypeAdapters.JSON_ELEMENT_FACTORY); @@ -453,7 +453,7 @@ public final class Gson { out.endArray(); } @Override public AtomicLongArray read(JsonReader in) throws IOException { - List list = new ArrayList(); + List list = new ArrayList<>(); in.beginArray(); while (in.hasNext()) { long value = longAdapter.read(in).longValue(); @@ -486,7 +486,7 @@ public final class Gson { Map, FutureTypeAdapter> threadCalls = calls.get(); boolean requiresThreadLocalCleanup = false; if (threadCalls == null) { - threadCalls = new HashMap, FutureTypeAdapter>(); + threadCalls = new HashMap<>(); calls.set(threadCalls); requiresThreadLocalCleanup = true; } @@ -498,7 +498,7 @@ public final class Gson { } try { - FutureTypeAdapter call = new FutureTypeAdapter(); + FutureTypeAdapter call = new FutureTypeAdapter<>(); threadCalls.put(type, call); for (TypeAdapterFactory factory : factories) { diff --git a/gson/src/main/java/com/google/gson/GsonBuilder.java b/gson/src/main/java/com/google/gson/GsonBuilder.java index 22935b1a..5e77ac0c 100644 --- a/gson/src/main/java/com/google/gson/GsonBuilder.java +++ b/gson/src/main/java/com/google/gson/GsonBuilder.java @@ -84,11 +84,10 @@ public final class GsonBuilder { private Excluder excluder = Excluder.DEFAULT; private LongSerializationPolicy longSerializationPolicy = LongSerializationPolicy.DEFAULT; private FieldNamingStrategy fieldNamingPolicy = FieldNamingPolicy.IDENTITY; - private final Map> instanceCreators - = new HashMap>(); - private final List factories = new ArrayList(); + private final Map> instanceCreators = new HashMap<>(); + private final List factories = new ArrayList<>(); /** tree-style hierarchy factories. These come after factories for backwards compatibility. */ - private final List hierarchyFactories = new ArrayList(); + private final List hierarchyFactories = new ArrayList<>(); private boolean serializeNulls = DEFAULT_SERIALIZE_NULLS; private String datePattern = DEFAULT_DATE_PATTERN; private int dateStyle = DateFormat.DEFAULT; @@ -102,7 +101,7 @@ public final class GsonBuilder { private boolean useJdkUnsafe = DEFAULT_USE_JDK_UNSAFE; private ToNumberStrategy objectToNumberStrategy = DEFAULT_OBJECT_TO_NUMBER_STRATEGY; private ToNumberStrategy numberToNumberStrategy = DEFAULT_NUMBER_TO_NUMBER_STRATEGY; - private final LinkedList reflectionFilters = new LinkedList(); + private final LinkedList reflectionFilters = new LinkedList<>(); /** * Creates a GsonBuilder instance that can be used to build Gson with various configuration @@ -227,7 +226,7 @@ public final class GsonBuilder { * .enableComplexMapKeySerialization() * .create(); * - * Map original = new LinkedHashMap(); + * Map original = new LinkedHashMap<>(); * original.put(new Point(5, 6), "a"); * original.put(new Point(8, 8), "b"); * System.out.println(gson.toJson(original, type)); @@ -254,7 +253,7 @@ public final class GsonBuilder { * .enableComplexMapKeySerialization() * .create(); * - * Map original = new LinkedHashMap(); + * Map original = new LinkedHashMap<>(); * original.put(new Point(5, 6), "a"); * original.put(new Point(8, 8), "b"); * System.out.println(gson.toJson(original, type)); @@ -664,23 +663,23 @@ public final class GsonBuilder { * @return an instance of Gson configured with the options currently set in this builder */ public Gson create() { - List factories = new ArrayList(this.factories.size() + this.hierarchyFactories.size() + 3); + List factories = new ArrayList<>(this.factories.size() + this.hierarchyFactories.size() + 3); factories.addAll(this.factories); Collections.reverse(factories); - List hierarchyFactories = new ArrayList(this.hierarchyFactories); + List hierarchyFactories = new ArrayList<>(this.hierarchyFactories); Collections.reverse(hierarchyFactories); factories.addAll(hierarchyFactories); addTypeAdaptersForDate(datePattern, dateStyle, timeStyle, factories); - return new Gson(excluder, fieldNamingPolicy, new HashMap>(instanceCreators), + return new Gson(excluder, fieldNamingPolicy, new HashMap<>(instanceCreators), serializeNulls, complexMapKeySerialization, generateNonExecutableJson, escapeHtmlChars, prettyPrinting, lenient, serializeSpecialFloatingPointValues, useJdkUnsafe, longSerializationPolicy, - datePattern, dateStyle, timeStyle, new ArrayList(this.factories), - new ArrayList(this.hierarchyFactories), factories, - objectToNumberStrategy, numberToNumberStrategy, new ArrayList(reflectionFilters)); + datePattern, dateStyle, timeStyle, new ArrayList<>(this.factories), + new ArrayList<>(this.hierarchyFactories), factories, + objectToNumberStrategy, numberToNumberStrategy, new ArrayList<>(reflectionFilters)); } private void addTypeAdaptersForDate(String datePattern, int dateStyle, int timeStyle, diff --git a/gson/src/main/java/com/google/gson/JsonArray.java b/gson/src/main/java/com/google/gson/JsonArray.java index 68f503db..fe8b686d 100644 --- a/gson/src/main/java/com/google/gson/JsonArray.java +++ b/gson/src/main/java/com/google/gson/JsonArray.java @@ -37,11 +37,11 @@ public final class JsonArray extends JsonElement implements Iterable(); + elements = new ArrayList<>(); } public JsonArray(int capacity) { - elements = new ArrayList(capacity); + elements = new ArrayList<>(capacity); } /** diff --git a/gson/src/main/java/com/google/gson/JsonObject.java b/gson/src/main/java/com/google/gson/JsonObject.java index d4feb96e..285a8429 100644 --- a/gson/src/main/java/com/google/gson/JsonObject.java +++ b/gson/src/main/java/com/google/gson/JsonObject.java @@ -30,8 +30,7 @@ import java.util.Set; * @author Joel Leitch */ public final class JsonObject extends JsonElement { - private final LinkedTreeMap members = - new LinkedTreeMap(); + private final LinkedTreeMap members = new LinkedTreeMap<>(); /** * Creates a deep copy of this element and all its children diff --git a/gson/src/main/java/com/google/gson/TypeAdapterFactory.java b/gson/src/main/java/com/google/gson/TypeAdapterFactory.java index e12a72dc..c12429e9 100644 --- a/gson/src/main/java/com/google/gson/TypeAdapterFactory.java +++ b/gson/src/main/java/com/google/gson/TypeAdapterFactory.java @@ -35,7 +35,7 @@ import com.google.gson.reflect.TypeToken; * return null; * } * - * final Map lowercaseToConstant = new HashMap(); + * final Map lowercaseToConstant = new HashMap<>(); * for (T constant : rawType.getEnumConstants()) { * lowercaseToConstant.put(toLowercase(constant), constant); * } diff --git a/gson/src/main/java/com/google/gson/internal/ConstructorConstructor.java b/gson/src/main/java/com/google/gson/internal/ConstructorConstructor.java index 0dfd134b..68b2bd64 100644 --- a/gson/src/main/java/com/google/gson/internal/ConstructorConstructor.java +++ b/gson/src/main/java/com/google/gson/internal/ConstructorConstructor.java @@ -277,25 +277,25 @@ public final class ConstructorConstructor { if (SortedSet.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new TreeSet(); + return (T) new TreeSet<>(); } }; } else if (Set.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new LinkedHashSet(); + return (T) new LinkedHashSet<>(); } }; } else if (Queue.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new ArrayDeque(); + return (T) new ArrayDeque<>(); } }; } else { return new ObjectConstructor() { @Override public T construct() { - return (T) new ArrayList(); + return (T) new ArrayList<>(); } }; } @@ -305,32 +305,32 @@ public final class ConstructorConstructor { if (ConcurrentNavigableMap.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new ConcurrentSkipListMap(); + return (T) new ConcurrentSkipListMap<>(); } }; } else if (ConcurrentMap.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new ConcurrentHashMap(); + return (T) new ConcurrentHashMap<>(); } }; } else if (SortedMap.class.isAssignableFrom(rawType)) { return new ObjectConstructor() { @Override public T construct() { - return (T) new TreeMap(); + return (T) new TreeMap<>(); } }; } else if (type instanceof ParameterizedType && !(String.class.isAssignableFrom( TypeToken.get(((ParameterizedType) type).getActualTypeArguments()[0]).getRawType()))) { return new ObjectConstructor() { @Override public T construct() { - return (T) new LinkedHashMap(); + return (T) new LinkedHashMap<>(); } }; } else { return new ObjectConstructor() { @Override public T construct() { - return (T) new LinkedTreeMap(); + return (T) new LinkedTreeMap<>(); } }; } diff --git a/gson/src/main/java/com/google/gson/internal/Excluder.java b/gson/src/main/java/com/google/gson/internal/Excluder.java index 8cea6cf8..8d8a25f4 100644 --- a/gson/src/main/java/com/google/gson/internal/Excluder.java +++ b/gson/src/main/java/com/google/gson/internal/Excluder.java @@ -97,12 +97,11 @@ public final class Excluder implements TypeAdapterFactory, Cloneable { boolean serialization, boolean deserialization) { Excluder result = clone(); if (serialization) { - result.serializationStrategies = new ArrayList(serializationStrategies); + result.serializationStrategies = new ArrayList<>(serializationStrategies); result.serializationStrategies.add(exclusionStrategy); } if (deserialization) { - result.deserializationStrategies - = new ArrayList(deserializationStrategies); + result.deserializationStrategies = new ArrayList<>(deserializationStrategies); result.deserializationStrategies.add(exclusionStrategy); } return result; diff --git a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java index 3be43689..40eb8bb1 100644 --- a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java +++ b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java @@ -52,7 +52,7 @@ public final class LinkedTreeMap extends AbstractMap implements Seri int modCount = 0; // Used to preserve iteration order - final Node header = new Node(); + final Node header = new Node<>(); /** * Create a natural order, empty tree map whose keys must be mutually @@ -166,10 +166,10 @@ public final class LinkedTreeMap extends AbstractMap implements Seri if (comparator == NATURAL_ORDER && !(key instanceof Comparable)) { throw new ClassCastException(key.getClass().getName() + " is not Comparable"); } - created = new Node(nearest, key, header, header.prev); + created = new Node<>(nearest, key, header, header.prev); root = created; } else { - created = new Node(nearest, key, header, header.prev); + created = new Node<>(nearest, key, header, header.prev); if (comparison < 0) { // nearest.key is higher nearest.left = created; } else { // comparison > 0, nearest.key is lower @@ -628,7 +628,7 @@ public final class LinkedTreeMap extends AbstractMap implements Seri * shouldn't use it. */ private Object writeReplace() throws ObjectStreamException { - return new LinkedHashMap(this); + return new LinkedHashMap<>(this); } private void readObject(ObjectInputStream in) throws IOException { diff --git a/gson/src/main/java/com/google/gson/internal/bind/ArrayTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/ArrayTypeAdapter.java index 56101706..efaa834f 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/ArrayTypeAdapter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/ArrayTypeAdapter.java @@ -56,7 +56,7 @@ public final class ArrayTypeAdapter extends TypeAdapter { public ArrayTypeAdapter(Gson context, TypeAdapter componentTypeAdapter, Class componentType) { this.componentTypeAdapter = - new TypeAdapterRuntimeTypeWrapper(context, componentTypeAdapter, componentType); + new TypeAdapterRuntimeTypeWrapper<>(context, componentTypeAdapter, componentType); this.componentType = componentType; } @@ -66,7 +66,7 @@ public final class ArrayTypeAdapter extends TypeAdapter { return null; } - List list = new ArrayList(); + List list = new ArrayList<>(); in.beginArray(); while (in.hasNext()) { E instance = componentTypeAdapter.read(in); diff --git a/gson/src/main/java/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java b/gson/src/main/java/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java index 1d57844a..8c65491a 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java +++ b/gson/src/main/java/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java @@ -66,7 +66,7 @@ public final class CollectionTypeAdapterFactory implements TypeAdapterFactory { TypeAdapter elementTypeAdapter, ObjectConstructor> constructor) { this.elementTypeAdapter = - new TypeAdapterRuntimeTypeWrapper(context, elementTypeAdapter, elementType); + new TypeAdapterRuntimeTypeWrapper<>(context, elementTypeAdapter, elementType); this.constructor = constructor; } diff --git a/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java index c5b16a81..decd3c5c 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/DateTypeAdapter.java @@ -55,7 +55,7 @@ public final class DateTypeAdapter extends TypeAdapter { * List of 1 or more different date formats used for de-serialization attempts. * The first of them (default US format) is used for serialization as well. */ - private final List dateFormats = new ArrayList(); + private final List dateFormats = new ArrayList<>(); public DateTypeAdapter() { dateFormats.add(DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.US)); diff --git a/gson/src/main/java/com/google/gson/internal/bind/DefaultDateTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/DefaultDateTypeAdapter.java index f5ee4e21..0b7435f2 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/DefaultDateTypeAdapter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/DefaultDateTypeAdapter.java @@ -68,19 +68,19 @@ public final class DefaultDateTypeAdapter extends TypeAdapter } public final TypeAdapterFactory createAdapterFactory(String datePattern) { - return createFactory(new DefaultDateTypeAdapter(this, datePattern)); + return createFactory(new DefaultDateTypeAdapter<>(this, datePattern)); } public final TypeAdapterFactory createAdapterFactory(int style) { - return createFactory(new DefaultDateTypeAdapter(this, style)); + return createFactory(new DefaultDateTypeAdapter<>(this, style)); } public final TypeAdapterFactory createAdapterFactory(int dateStyle, int timeStyle) { - return createFactory(new DefaultDateTypeAdapter(this, dateStyle, timeStyle)); + return createFactory(new DefaultDateTypeAdapter<>(this, dateStyle, timeStyle)); } public final TypeAdapterFactory createDefaultsAdapterFactory() { - return createFactory(new DefaultDateTypeAdapter(this, DateFormat.DEFAULT, DateFormat.DEFAULT)); + return createFactory(new DefaultDateTypeAdapter<>(this, DateFormat.DEFAULT, DateFormat.DEFAULT)); } } @@ -90,7 +90,7 @@ public final class DefaultDateTypeAdapter extends TypeAdapter * List of 1 or more different date formats used for de-serialization attempts. * The first of them is used for serialization as well. */ - private final List dateFormats = new ArrayList(); + private final List dateFormats = new ArrayList<>(); private DefaultDateTypeAdapter(DateType dateType, String datePattern) { this.dateType = $Gson$Preconditions.checkNotNull(dateType); diff --git a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java index ee91e6b4..f1fce21c 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java @@ -46,7 +46,7 @@ public final class JsonTreeWriter extends JsonWriter { private static final JsonPrimitive SENTINEL_CLOSED = new JsonPrimitive("closed"); /** The JsonElements and JsonArrays under modification, outermost to innermost. */ - private final List stack = new ArrayList(); + private final List stack = new ArrayList<>(); /** The name for the next JSON object value. If non-null, the top of the stack is a JsonObject. */ private String pendingName; diff --git a/gson/src/main/java/com/google/gson/internal/bind/MapTypeAdapterFactory.java b/gson/src/main/java/com/google/gson/internal/bind/MapTypeAdapterFactory.java index 5a34a5d5..65e5789a 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/MapTypeAdapterFactory.java +++ b/gson/src/main/java/com/google/gson/internal/bind/MapTypeAdapterFactory.java @@ -46,7 +46,7 @@ import java.util.Map; * can be serialized as strings; this is insufficient for some key types. For * example, consider a map whose keys are points on a grid. The default JSON * form encodes reasonably:
   {@code
- *   Map original = new LinkedHashMap();
+ *   Map original = new LinkedHashMap<>();
  *   original.put(new Point(5, 6), "a");
  *   original.put(new Point(8, 8), "b");
  *   System.out.println(gson.toJson(original, type));
@@ -151,9 +151,9 @@ public final class MapTypeAdapterFactory implements TypeAdapterFactory {
         Type valueType, TypeAdapter valueTypeAdapter,
         ObjectConstructor> constructor) {
       this.keyTypeAdapter =
-        new TypeAdapterRuntimeTypeWrapper(context, keyTypeAdapter, keyType);
+        new TypeAdapterRuntimeTypeWrapper<>(context, keyTypeAdapter, keyType);
       this.valueTypeAdapter =
-        new TypeAdapterRuntimeTypeWrapper(context, valueTypeAdapter, valueType);
+        new TypeAdapterRuntimeTypeWrapper<>(context, valueTypeAdapter, valueType);
       this.constructor = constructor;
     }
 
@@ -212,9 +212,9 @@ public final class MapTypeAdapterFactory implements TypeAdapterFactory {
       }
 
       boolean hasComplexKeys = false;
-      List keys = new ArrayList(map.size());
+      List keys = new ArrayList<>(map.size());
 
-      List values = new ArrayList(map.size());
+      List values = new ArrayList<>(map.size());
       for (Map.Entry entry : map.entrySet()) {
         JsonElement keyElement = keyTypeAdapter.toJsonTree(entry.getKey());
         keys.add(keyElement);
diff --git a/gson/src/main/java/com/google/gson/internal/bind/ObjectTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/ObjectTypeAdapter.java
index b50f61e1..2faebb08 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/ObjectTypeAdapter.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/ObjectTypeAdapter.java
@@ -74,7 +74,7 @@ public final class ObjectTypeAdapter extends TypeAdapter {
     JsonToken token = in.peek();
     switch (token) {
     case BEGIN_ARRAY:
-      List list = new ArrayList();
+      List list = new ArrayList<>();
       in.beginArray();
       while (in.hasNext()) {
         list.add(read(in));
@@ -83,7 +83,7 @@ public final class ObjectTypeAdapter extends TypeAdapter {
       return list;
 
     case BEGIN_OBJECT:
-      Map map = new LinkedTreeMap();
+      Map map = new LinkedTreeMap<>();
       in.beginObject();
       while (in.hasNext()) {
         map.put(in.nextName(), read(in));
diff --git a/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java b/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
index 68b0a4eb..1687889b 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
@@ -90,7 +90,7 @@ public final class ReflectiveTypeAdapterFactory implements TypeAdapterFactory {
       return Collections.singletonList(serializedName);
     }
 
-    List fieldNames = new ArrayList(alternates.length + 1);
+    List fieldNames = new ArrayList<>(alternates.length + 1);
     fieldNames.add(serializedName);
     for (String alternate : alternates) {
       fieldNames.add(alternate);
@@ -113,7 +113,7 @@ public final class ReflectiveTypeAdapterFactory implements TypeAdapterFactory {
     boolean blockInaccessible = filterResult == FilterResult.BLOCK_INACCESSIBLE;
 
     ObjectConstructor constructor = constructorConstructor.get(type);
-    return new Adapter(constructor, getBoundFields(gson, type, raw, blockInaccessible));
+    return new Adapter<>(constructor, getBoundFields(gson, type, raw, blockInaccessible));
   }
 
   private static void checkAccessible(Object object, Field field) {
@@ -174,7 +174,7 @@ public final class ReflectiveTypeAdapterFactory implements TypeAdapterFactory {
   }
 
   private Map getBoundFields(Gson context, TypeToken type, Class raw, boolean blockInaccessible) {
-    Map result = new LinkedHashMap();
+    Map result = new LinkedHashMap<>();
     if (raw.isInterface()) {
       return result;
     }
diff --git a/gson/src/main/java/com/google/gson/internal/bind/TreeTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/TreeTypeAdapter.java
index 03dfc326..50f46b5a 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/TreeTypeAdapter.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/TreeTypeAdapter.java
@@ -145,7 +145,7 @@ public final class TreeTypeAdapter extends TypeAdapter {
           ? exactType.equals(type) || matchRawType && exactType.getType() == type.getRawType()
           : hierarchyType.isAssignableFrom(type.getRawType());
       return matches
-          ? new TreeTypeAdapter((JsonSerializer) serializer,
+          ? new TreeTypeAdapter<>((JsonSerializer) serializer,
               (JsonDeserializer) deserializer, gson, type, this)
           : null;
     }
diff --git a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
index ef3a5594..e57c282f 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
@@ -278,7 +278,7 @@ public final class TypeAdapters {
 
   public static final TypeAdapter ATOMIC_INTEGER_ARRAY = new TypeAdapter() {
     @Override public AtomicIntegerArray read(JsonReader in) throws IOException {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         in.beginArray();
         while (in.hasNext()) {
           try {
@@ -774,9 +774,9 @@ public final class TypeAdapters {
       = newTypeHierarchyFactory(JsonElement.class, JSON_ELEMENT);
 
   private static final class EnumTypeAdapter> extends TypeAdapter {
-    private final Map nameToConstant = new HashMap();
-    private final Map stringToConstant = new HashMap();
-    private final Map constantToName = new HashMap();
+    private final Map nameToConstant = new HashMap<>();
+    private final Map stringToConstant = new HashMap<>();
+    private final Map constantToName = new HashMap<>();
 
     public EnumTypeAdapter(final Class classOfT) {
       try {
@@ -786,7 +786,7 @@ public final class TypeAdapters {
         Field[] constantFields = AccessController.doPrivileged(new PrivilegedAction() {
           @Override public Field[] run() {
             Field[] fields = classOfT.getDeclaredFields();
-            ArrayList constantFieldsList = new ArrayList(fields.length);
+            ArrayList constantFieldsList = new ArrayList<>(fields.length);
             for (Field f : fields) {
               if (f.isEnumConstant()) {
                 constantFieldsList.add(f);
diff --git a/gson/src/main/java/com/google/gson/reflect/TypeToken.java b/gson/src/main/java/com/google/gson/reflect/TypeToken.java
index 3fb8af2b..e122f407 100644
--- a/gson/src/main/java/com/google/gson/reflect/TypeToken.java
+++ b/gson/src/main/java/com/google/gson/reflect/TypeToken.java
@@ -221,14 +221,14 @@ public class TypeToken {
     }
 
     for (Type itype : clazz.getGenericInterfaces()) {
-      if (isAssignableFrom(itype, to, new HashMap(typeVarMap))) {
+      if (isAssignableFrom(itype, to, new HashMap<>(typeVarMap))) {
         return true;
       }
     }
 
     // Interfaces didn't work, try the superclass.
     Type sType = clazz.getGenericSuperclass();
-    return isAssignableFrom(sType, to, new HashMap(typeVarMap));
+    return isAssignableFrom(sType, to, new HashMap<>(typeVarMap));
   }
 
   /**
@@ -293,14 +293,14 @@ public class TypeToken {
    * Gets type literal for the given {@code Type} instance.
    */
   public static TypeToken get(Type type) {
-    return new TypeToken(type);
+    return new TypeToken<>(type);
   }
 
   /**
    * Gets type literal for the given {@code Class} instance.
    */
   public static  TypeToken get(Class type) {
-    return new TypeToken(type);
+    return new TypeToken<>(type);
   }
 
   /**
@@ -308,13 +308,13 @@ public class TypeToken {
    * {@code rawType}.
    */
   public static TypeToken getParameterized(Type rawType, Type... typeArguments) {
-    return new TypeToken($Gson$Types.newParameterizedTypeWithOwner(null, rawType, typeArguments));
+    return new TypeToken<>($Gson$Types.newParameterizedTypeWithOwner(null, rawType, typeArguments));
   }
 
   /**
    * Gets type literal for the array type whose elements are all instances of {@code componentType}.
    */
   public static TypeToken getArray(Type componentType) {
-    return new TypeToken($Gson$Types.arrayOf(componentType));
+    return new TypeToken<>($Gson$Types.arrayOf(componentType));
   }
 }
diff --git a/gson/src/main/java/com/google/gson/stream/JsonReader.java b/gson/src/main/java/com/google/gson/stream/JsonReader.java
index f722490e..2984d19c 100644
--- a/gson/src/main/java/com/google/gson/stream/JsonReader.java
+++ b/gson/src/main/java/com/google/gson/stream/JsonReader.java
@@ -95,7 +95,7 @@ import java.util.Arrays;
  *   }
  *
  *   public List readMessagesArray(JsonReader reader) throws IOException {
- *     List messages = new ArrayList();
+ *     List messages = new ArrayList<>();
  *
  *     reader.beginArray();
  *     while (reader.hasNext()) {
@@ -131,7 +131,7 @@ import java.util.Arrays;
  *   }
  *
  *   public List readDoublesArray(JsonReader reader) throws IOException {
- *     List doubles = new ArrayList();
+ *     List doubles = new ArrayList<>();
  *
  *     reader.beginArray();
  *     while (reader.hasNext()) {
diff --git a/gson/src/test/java/com/google/gson/DefaultMapJsonSerializerTest.java b/gson/src/test/java/com/google/gson/DefaultMapJsonSerializerTest.java
index 5c061953..624b8637 100644
--- a/gson/src/test/java/com/google/gson/DefaultMapJsonSerializerTest.java
+++ b/gson/src/test/java/com/google/gson/DefaultMapJsonSerializerTest.java
@@ -32,7 +32,7 @@ public class DefaultMapJsonSerializerTest extends TestCase {
   private Gson gson = new Gson();
 
   public void testEmptyMapNoTypeSerialization() {
-    Map emptyMap = new HashMap();
+    Map emptyMap = new HashMap<>();
     JsonElement element = gson.toJsonTree(emptyMap, emptyMap.getClass());
     assertTrue(element instanceof JsonObject);
     JsonObject emptyMapJsonObject = (JsonObject) element;
@@ -41,7 +41,7 @@ public class DefaultMapJsonSerializerTest extends TestCase {
 
   public void testEmptyMapSerialization() {
     Type mapType = new TypeToken>() { }.getType();
-    Map emptyMap = new HashMap();
+    Map emptyMap = new HashMap<>();
     JsonElement element = gson.toJsonTree(emptyMap, mapType);
 
     assertTrue(element instanceof JsonObject);
@@ -51,7 +51,7 @@ public class DefaultMapJsonSerializerTest extends TestCase {
 
   public void testNonEmptyMapSerialization() {
     Type mapType = new TypeToken>() { }.getType();
-    Map myMap = new HashMap();
+    Map myMap = new HashMap<>();
     String key = "key1";
     myMap.put(key, "value1");
     Gson gson = new Gson();
diff --git a/gson/src/test/java/com/google/gson/JavaSerializationTest.java b/gson/src/test/java/com/google/gson/JavaSerializationTest.java
index fbaea19d..90da3e85 100644
--- a/gson/src/test/java/com/google/gson/JavaSerializationTest.java
+++ b/gson/src/test/java/com/google/gson/JavaSerializationTest.java
@@ -43,7 +43,7 @@ public final class JavaSerializationTest extends TestCase {
     Map serialized = serializedCopy(map);
     assertEquals(map, serialized);
     // Also check that the iteration order is retained.
-    assertEquals(Arrays.asList("b", "c", "a"), new ArrayList(serialized.keySet()));
+    assertEquals(Arrays.asList("b", "c", "a"), new ArrayList<>(serialized.keySet()));
   }
 
   public void testListIsSerializable() throws Exception {
diff --git a/gson/src/test/java/com/google/gson/ObjectTypeAdapterTest.java b/gson/src/test/java/com/google/gson/ObjectTypeAdapterTest.java
index 2891bffc..d5afc153 100644
--- a/gson/src/test/java/com/google/gson/ObjectTypeAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/ObjectTypeAdapterTest.java
@@ -40,13 +40,13 @@ public final class ObjectTypeAdapterTest extends TestCase {
   }
   
   public void testSerializeNullValue() throws Exception {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", null);
     assertEquals("{'a':null}", adapter.toJson(map).replace('"', '\''));
   }
 
   public void testDeserializeNullValue() throws Exception {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", null);
     assertEquals(map, adapter.fromJson("{\"a\":null}"));
   }
diff --git a/gson/src/test/java/com/google/gson/ParameterizedTypeFixtures.java b/gson/src/test/java/com/google/gson/ParameterizedTypeFixtures.java
index 0959ee42..3aca9fb7 100644
--- a/gson/src/test/java/com/google/gson/ParameterizedTypeFixtures.java
+++ b/gson/src/test/java/com/google/gson/ParameterizedTypeFixtures.java
@@ -119,7 +119,7 @@ public class ParameterizedTypeFixtures {
       this.instanceOfT = instanceOfT;
     }
     @Override public MyParameterizedType createInstance(Type type) {
-      return new MyParameterizedType(instanceOfT);
+      return new MyParameterizedType<>(instanceOfT);
     }
   }
 
@@ -171,7 +171,7 @@ public class ParameterizedTypeFixtures {
         PrimitiveTypeAdapter typeAdapter = new PrimitiveTypeAdapter();
         value = (T) typeAdapter.adaptType(value, rawType);
       }
-      return new MyParameterizedType(value);
+      return new MyParameterizedType<>(value);
     }
   }
 }
diff --git a/gson/src/test/java/com/google/gson/functional/ArrayTest.java b/gson/src/test/java/com/google/gson/functional/ArrayTest.java
index dd0b6286..da8be85b 100644
--- a/gson/src/test/java/com/google/gson/functional/ArrayTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ArrayTest.java
@@ -152,7 +152,7 @@ public class ArrayTest extends TestCase {
     for (int i = 0; i < arraySize; ++i) {
       int startValue = (3 * i) + 1;
       sb.append('[').append(startValue).append(',').append(startValue + 1).append(']');
-      ArrayList tmpList = new ArrayList();
+      ArrayList tmpList = new ArrayList<>();
       tmpList.add(startValue);
       tmpList.add(startValue + 1);
       arrayOfCollection[i] = tmpList;
diff --git a/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java b/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
index 6c496237..f4419551 100644
--- a/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
@@ -112,7 +112,7 @@ public class CircularReferenceTest extends TestCase {
   }
 
   private static class ContainsReferenceToSelfType {
-    Collection children = new ArrayList();
+    Collection children = new ArrayList<>();
   }
 
   private static class ClassWithSelfReference {
diff --git a/gson/src/test/java/com/google/gson/functional/CollectionTest.java b/gson/src/test/java/com/google/gson/functional/CollectionTest.java
index 8d831a63..f113b850 100644
--- a/gson/src/test/java/com/google/gson/functional/CollectionTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CollectionTest.java
@@ -91,7 +91,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testLinkedListSerialization() {
-    List list = new LinkedList();
+    List list = new LinkedList<>();
     list.add("a1");
     list.add("a2");
     Type linkedListType = new TypeToken>() {}.getType();
@@ -109,7 +109,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testQueueSerialization() {
-    Queue queue = new LinkedList();
+    Queue queue = new LinkedList<>();
     queue.add("a1");
     queue.add("a2");
     Type queueType = new TypeToken>() {}.getType();
@@ -161,7 +161,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testNullsInListSerialization() {
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add("foo");
     list.add(null);
     list.add("bar");
@@ -172,7 +172,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testNullsInListDeserialization() {
-    List expected = new ArrayList();
+    List expected = new ArrayList<>();
     expected.add("foo");
     expected.add(null);
     expected.add("bar");
@@ -185,7 +185,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testCollectionOfObjectSerialization() {
-    List target = new ArrayList();
+    List target = new ArrayList<>();
     target.add("Hello");
     target.add("World");
     assertEquals("[\"Hello\",\"World\"]", gson.toJson(target));
@@ -195,7 +195,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testCollectionOfObjectWithNullSerialization() {
-    List target = new ArrayList();
+    List target = new ArrayList<>();
     target.add("Hello");
     target.add(null);
     target.add("World");
@@ -206,14 +206,14 @@ public class CollectionTest extends TestCase {
   }
 
   public void testCollectionOfStringsSerialization() {
-    List target = new ArrayList();
+    List target = new ArrayList<>();
     target.add("Hello");
     target.add("World");
     assertEquals("[\"Hello\",\"World\"]", gson.toJson(target));
   }
 
   public void testCollectionOfBagOfPrimitivesSerialization() {
-    List target = new ArrayList();
+    List target = new ArrayList<>();
     BagOfPrimitives objA = new BagOfPrimitives(3L, 1, true, "blah");
     BagOfPrimitives objB = new BagOfPrimitives(2L, 6, false, "blahB");
     target.add(objA);
@@ -297,7 +297,7 @@ public class CollectionTest extends TestCase {
   }
 
   public void testWildcardCollectionField() throws Exception {
-    Collection collection = new ArrayList();
+    Collection collection = new ArrayList<>();
     BagOfPrimitives objA = new BagOfPrimitives(3L, 1, true, "blah");
     BagOfPrimitives objB = new BagOfPrimitives(2L, 6, false, "blahB");
     collection.add(objA);
@@ -340,7 +340,7 @@ public class CollectionTest extends TestCase {
   }
 
   static class HasArrayListField {
-    ArrayList longs = new ArrayList();
+    ArrayList longs = new ArrayList<>();
   }
 
   @SuppressWarnings("rawtypes")
@@ -377,7 +377,7 @@ public class CollectionTest extends TestCase {
     }
   }
   public void testSetSerialization() {
-    Set set = new HashSet();
+    Set set = new HashSet<>();
     set.add(new Entry(1));
     set.add(new Entry(2));
     String json = gson.toJson(set);
diff --git a/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
index b452849d..b14ed52e 100644
--- a/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
@@ -314,7 +314,7 @@ public class CustomTypeAdaptersTest extends TestCase {
       .create();
     Type setType = new TypeToken>() {}.getType();
     StringHolder holder = new StringHolder("Jacob", "Tomaw");
-    Set setOfHolders = new HashSet();
+    Set setOfHolders = new HashSet<>();
     setOfHolders.add(holder);
     String json = gson.toJson(setOfHolders, setType);
     assertTrue(json.contains("Jacob:Tomaw"));
@@ -326,7 +326,7 @@ public class CustomTypeAdaptersTest extends TestCase {
       .registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
       .create();
     StringHolder holder = new StringHolder("Jacob", "Tomaw");
-    Set setOfHolders = new HashSet();
+    Set setOfHolders = new HashSet<>();
     setOfHolders.add(holder);
     String json = gson.toJson(setOfHolders);
     assertTrue(json.contains("Jacob:Tomaw"));
@@ -352,7 +352,7 @@ public class CustomTypeAdaptersTest extends TestCase {
       .create();
     Type mapType = new TypeToken>() {}.getType();
     StringHolder holder = new StringHolder("Jacob", "Tomaw");
-    Map mapOfHolders = new HashMap();
+    Map mapOfHolders = new HashMap<>();
     mapOfHolders.put("foo", holder);
     String json = gson.toJson(mapOfHolders, mapType);
     assertTrue(json.contains("\"foo\":\"Jacob:Tomaw\""));
@@ -364,7 +364,7 @@ public class CustomTypeAdaptersTest extends TestCase {
       .registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
       .create();
     StringHolder holder = new StringHolder("Jacob", "Tomaw");
-    Map mapOfHolders = new HashMap();
+    Map mapOfHolders = new HashMap<>();
     mapOfHolders.put("foo", holder);
     String json = gson.toJson(mapOfHolders);
     assertTrue(json.contains("\"foo\":\"Jacob:Tomaw\""));
diff --git a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
index 154bbc0a..91a4639e 100644
--- a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
@@ -293,7 +293,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
 
   public void testSetSerialization() throws Exception {
     Gson gson = new Gson();
-    HashSet s = new HashSet();
+    HashSet s = new HashSet<>();
     s.add("blah");
     String json = gson.toJson(s);
     assertEquals("[\"blah\"]", json);
@@ -619,7 +619,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
   }
 
   public void testTreeSetSerialization() {
-    TreeSet treeSet = new TreeSet();
+    TreeSet treeSet = new TreeSet<>();
     treeSet.add("Value1");
     String json = gson.toJson(treeSet);
     assertEquals("[\"Value1\"]", json);
diff --git a/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java b/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
index f89148e3..87ee81e5 100644
--- a/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
@@ -50,7 +50,7 @@ public class DelegateTypeAdapterTest extends TestCase {
   }
 
   public void testDelegateInvoked() {
-    List bags = new ArrayList();
+    List bags = new ArrayList<>();
     for (int i = 0; i < 10; ++i) {
       bags.add(new BagOfPrimitives(i, i, i % 2 == 0, String.valueOf(i)));
     }
diff --git a/gson/src/test/java/com/google/gson/functional/EnumTest.java b/gson/src/test/java/com/google/gson/functional/EnumTest.java
index bb4f9b34..b46f80b8 100644
--- a/gson/src/test/java/com/google/gson/functional/EnumTest.java
+++ b/gson/src/test/java/com/google/gson/functional/EnumTest.java
@@ -66,7 +66,7 @@ public class EnumTest extends TestCase {
 
   public void testCollectionOfEnumsSerialization() {
     Type type = new TypeToken>() {}.getType();
-    Collection target = new ArrayList();
+    Collection target = new ArrayList<>();
     target.add(MyEnum.VALUE1);
     target.add(MyEnum.VALUE2);
     String expectedJson = "[\"VALUE1\",\"VALUE2\"]";
@@ -133,7 +133,7 @@ public class EnumTest extends TestCase {
   }
 
   public void testEnumSubclassAsParameterizedType() {
-    Collection list = new ArrayList();
+    Collection list = new ArrayList<>();
     list.add(Roshambo.ROCK);
     list.add(Roshambo.PAPER);
 
@@ -164,7 +164,7 @@ public class EnumTest extends TestCase {
   }
 
   public void testEnumMap() throws Exception {
-    EnumMap map = new EnumMap(MyEnum.class);
+    EnumMap map = new EnumMap<>(MyEnum.class);
     map.put(MyEnum.VALUE1, "test");
     String json = gson.toJson(map);
     assertEquals("{\"VALUE1\":\"test\"}", json);
diff --git a/gson/src/test/java/com/google/gson/functional/EscapingTest.java b/gson/src/test/java/com/google/gson/functional/EscapingTest.java
index 1581f451..053fd9a2 100644
--- a/gson/src/test/java/com/google/gson/functional/EscapingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/EscapingTest.java
@@ -47,7 +47,7 @@ public class EscapingTest extends TestCase {
   }
 
   public void testEscapeAllHtmlCharacters() {
-    List strings = new ArrayList();
+    List strings = new ArrayList<>();
     strings.add("<");
     strings.add(">");
     strings.add("=");
diff --git a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
index 475db838..84de37de 100644
--- a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
@@ -87,7 +87,7 @@ public class InheritanceTest extends TestCase {
   }
 
   public void testClassWithBaseCollectionFieldSerialization() {
-    Collection baseClasses = new ArrayList();
+    Collection baseClasses = new ArrayList<>();
     baseClasses.add(new Sub());
     baseClasses.add(new Sub());
     ClassWithBaseCollectionField sub = new ClassWithBaseCollectionField(baseClasses);
@@ -151,22 +151,22 @@ public class InheritanceTest extends TestCase {
   }
 
   public void testSubInterfacesOfCollectionSerialization() throws Exception {
-    List list = new LinkedList();
+    List list = new LinkedList<>();
     list.add(0);
     list.add(1);
     list.add(2);
     list.add(3);
-    Queue queue = new LinkedList();
+    Queue queue = new LinkedList<>();
     queue.add(0L);
     queue.add(1L);
     queue.add(2L);
     queue.add(3L);
-    Set set = new TreeSet();
+    Set set = new TreeSet<>();
     set.add(0.1F);
     set.add(0.2F);
     set.add(0.3F);
     set.add(0.4F);
-    SortedSet sortedSet = new TreeSet();
+    SortedSet sortedSet = new TreeSet<>();
     sortedSet.add('a');
     sortedSet.add('b');
     sortedSet.add('c');
diff --git a/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java b/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
index 5437c876..95e3e3ef 100644
--- a/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
@@ -91,7 +91,7 @@ public class InstanceCreatorTest extends TestCase {
     class SubArrayList extends ArrayList {}
     InstanceCreator> listCreator = new InstanceCreator>() {
       @Override public List createInstance(Type type) {
-        return new SubArrayList();
+        return new SubArrayList<>();
       }
     };
     Type listOfStringType = new TypeToken>() {}.getType();
diff --git a/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java b/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
index 8ab4e128..e6cb6dc8 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
@@ -137,8 +137,8 @@ public final class JsonAdapterSerializerDeserializerTest extends TestCase {
     @JsonAdapter(BaseStringAdapter.class) Base a;
     @JsonAdapter(BaseIntegerAdapter.class) Base b;
     Container(String a, int b) {
-      this.a = new Base(a);
-      this.b = new Base(b);
+      this.a = new Base<>(a);
+      this.b = new Base<>(b);
     }
   }
 
diff --git a/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java b/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
index 0d67ec83..114c94ec 100644
--- a/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
@@ -34,7 +34,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
         .enableComplexMapKeySerialization()
         .create();
 
-    Map original = new LinkedHashMap();
+    Map original = new LinkedHashMap<>();
     original.put(new Point(5, 5), "a");
     original.put(new Point(8, 8), "b");
     String json = gson.toJson(original, type);
@@ -42,7 +42,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
     assertEquals(original, gson.>fromJson(json, type));
 
     // test that registering a type adapter for one map doesn't interfere with others
-    Map otherMap = new LinkedHashMap();
+    Map otherMap = new LinkedHashMap<>();
     otherMap.put("t", true);
     otherMap.put("f", false);
     assertEquals("{\"t\":true,\"f\":false}",
@@ -58,7 +58,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
         .enableComplexMapKeySerialization()
         .create();
 
-    Map original = new LinkedHashMap();
+    Map original = new LinkedHashMap<>();
     original.put(1.0D, "a");
     original.put(1.0F, "b");
     try {
@@ -88,7 +88,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
         .enableComplexMapKeySerialization()
         .create();
 
-    Map original = new LinkedHashMap();
+    Map original = new LinkedHashMap<>();
     original.put(new Point(6, 5), "abc");
     original.put(new Point(1, 8), "def");
     String json = gson.toJson(original, type);
@@ -98,7 +98,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
 
   public void testMapWithTypeVariableSerialization() {
     Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
-    PointWithProperty map = new PointWithProperty();
+    PointWithProperty map = new PointWithProperty<>();
     map.map.put(new Point(2, 3), new Point(4, 5));
     Type type = new TypeToken>(){}.getType();
     String json = gson.toJson(map, type);
@@ -136,6 +136,6 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
   }
 
   static class PointWithProperty {
-    Map map = new HashMap();
+    Map map = new HashMap<>();
   }
 }
diff --git a/gson/src/test/java/com/google/gson/functional/MapTest.java b/gson/src/test/java/com/google/gson/functional/MapTest.java
index 602ff591..ef9eae2b 100644
--- a/gson/src/test/java/com/google/gson/functional/MapTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MapTest.java
@@ -61,7 +61,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerialization() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", 1);
     map.put("b", 2);
     Type typeOfMap = new TypeToken>() {}.getType();
@@ -89,7 +89,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerializationEmpty() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     Type typeOfMap = new TypeToken>() {}.getType();
     String json = gson.toJson(map, typeOfMap);
     assertEquals("{}", json);
@@ -102,7 +102,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerializationWithNullValue() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("abc", null);
     Type typeOfMap = new TypeToken>() {}.getType();
     String json = gson.toJson(map, typeOfMap);
@@ -120,7 +120,7 @@ public class MapTest extends TestCase {
 
   public void testMapSerializationWithNullValueButSerializeNulls() {
     gson = new GsonBuilder().serializeNulls().create();
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("abc", null);
     Type typeOfMap = new TypeToken>() {}.getType();
     String json = gson.toJson(map, typeOfMap);
@@ -129,7 +129,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerializationWithNullKey() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(null, 123);
     Type typeOfMap = new TypeToken>() {}.getType();
     String json = gson.toJson(map, typeOfMap);
@@ -151,7 +151,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerializationWithIntegerKeys() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(123, "456");
     Type typeOfMap = new TypeToken>() {}.getType();
     String json = gson.toJson(map, typeOfMap);
@@ -252,7 +252,7 @@ public class MapTest extends TestCase {
   }
 
   public void testParameterizedMapSubclassSerialization() {
-    MyParameterizedMap map = new MyParameterizedMap(10);
+    MyParameterizedMap map = new MyParameterizedMap<>(10);
     map.put("a", "b");
     Type type = new TypeToken>() {}.getType();
     String json = gson.toJson(map, type);
@@ -309,7 +309,7 @@ public class MapTest extends TestCase {
           }
         }).create();
 
-    Map src = new LinkedHashMap();
+    Map src = new LinkedHashMap<>();
     src.put("one", 1L);
     src.put("two", 2L);
     src.put("three", 3L);
@@ -321,7 +321,7 @@ public class MapTest extends TestCase {
    * Created in response to http://code.google.com/p/google-gson/issues/detail?id=99
    */
   private static class ClassWithAMap {
-    Map map = new TreeMap();
+    Map map = new TreeMap<>();
   }
 
   /**
@@ -350,8 +350,7 @@ public class MapTest extends TestCase {
   }
 
   public void testMapSerializationWithWildcardValues() {
-    Map> map =
-        new LinkedHashMap>();
+    Map> map = new LinkedHashMap<>();
     map.put("test", null);
     Type typeOfMap =
         new TypeToken>>() {}.getType();
@@ -379,8 +378,8 @@ public class MapTest extends TestCase {
    * From bug report http://code.google.com/p/google-gson/issues/detail?id=95
    */
   public void testMapOfMapSerialization() {
-    Map> map = new HashMap>();
-    Map nestedMap = new HashMap();
+    Map> map = new HashMap<>();
+    Map nestedMap = new HashMap<>();
     nestedMap.put("1", "1");
     nestedMap.put("2", "2");
     map.put("nestedMap", nestedMap);
@@ -406,7 +405,7 @@ public class MapTest extends TestCase {
    * From bug report http://code.google.com/p/google-gson/issues/detail?id=178
    */
   public void testMapWithQuotes() {
-    Map map = new HashMap();
+    Map map = new HashMap<>();
     map.put("a\"b", "c\"d");
     String json = gson.toJson(map);
     assertEquals("{\"a\\\"b\":\"c\\\"d\"}", json);
@@ -416,7 +415,7 @@ public class MapTest extends TestCase {
    * From issue 227.
    */
   public void testWriteMapsWithEmptyStringKey() {
-    Map map = new HashMap();
+    Map map = new HashMap<>();
     map.put("", true);
     assertEquals("{\"\":true}", gson.toJson(map));
 
@@ -431,11 +430,11 @@ public class MapTest extends TestCase {
    * From bug report http://code.google.com/p/google-gson/issues/detail?id=204
    */
   public void testSerializeMaps() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", 12);
     map.put("b", null);
 
-    LinkedHashMap innerMap = new LinkedHashMap();
+    LinkedHashMap innerMap = new LinkedHashMap<>();
     innerMap.put("test", 1);
     innerMap.put("TestStringArray", new String[] { "one", "two" });
     map.put("c", innerMap);
@@ -443,8 +442,8 @@ public class MapTest extends TestCase {
     assertEquals("{\"a\":12,\"b\":null,\"c\":{\"test\":1,\"TestStringArray\":[\"one\",\"two\"]}}",
         new GsonBuilder().serializeNulls().create().toJson(map));
     assertEquals("{\n  \"a\": 12,\n  \"b\": null,\n  \"c\": "
-  		+ "{\n    \"test\": 1,\n    \"TestStringArray\": "
-  		+ "[\n      \"one\",\n      \"two\"\n    ]\n  }\n}",
+        + "{\n    \"test\": 1,\n    \"TestStringArray\": "
+        + "[\n      \"one\",\n      \"two\"\n    ]\n  }\n}",
         new GsonBuilder().setPrettyPrinting().serializeNulls().create().toJson(map));
     assertEquals("{\"a\":12,\"c\":{\"test\":1,\"TestStringArray\":[\"one\",\"two\"]}}",
         new GsonBuilder().create().toJson(map));
@@ -530,7 +529,7 @@ public class MapTest extends TestCase {
   }
 
   public void testComplexKeysSerialization() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(new Point(2, 3), "a");
     map.put(new Point(5, 7), "b");
     String json = "{\"2,3\":\"a\",\"5,7\":\"b\"}";
@@ -549,7 +548,7 @@ public class MapTest extends TestCase {
 
   public void testStringKeyDeserialization() {
     String json = "{'2,3':'a','5,7':'b'}";
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("2,3", "a");
     map.put("5,7", "b");
     assertEquals(map, gson.fromJson(json, new TypeToken>() {}.getType()));
@@ -557,7 +556,7 @@ public class MapTest extends TestCase {
 
   public void testNumberKeyDeserialization() {
     String json = "{'2.3':'a','5.7':'b'}";
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(2.3, "a");
     map.put(5.7, "b");
     assertEquals(map, gson.fromJson(json, new TypeToken>() {}.getType()));
@@ -565,7 +564,7 @@ public class MapTest extends TestCase {
 
   public void testBooleanKeyDeserialization() {
     String json = "{'true':'a','false':'b'}";
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(true, "a");
     map.put(false, "b");
     assertEquals(map, gson.fromJson(json, new TypeToken>() {}.getType()));
@@ -598,7 +597,7 @@ public class MapTest extends TestCase {
   }
 
   private  Map newMap(K key1, V value1, K key2, V value2) {
-    Map result = new LinkedHashMap();
+    Map result = new LinkedHashMap<>();
     result.put(key1, value1);
     result.put(key2, value2);
     return result;
@@ -606,7 +605,7 @@ public class MapTest extends TestCase {
 
   public void testMapNamePromotionWithJsonElementReader() {
     String json = "{'2.3':'a'}";
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put(2.3, "a");
     JsonElement tree = JsonParser.parseString(json);
     assertEquals(map, gson.fromJson(tree, new TypeToken>() {}.getType()));
@@ -635,8 +634,8 @@ public class MapTest extends TestCase {
   }
 
   static final class MapClass {
-    private final Map bases = new HashMap();
-    private final Map subs = new HashMap();
+    private final Map bases = new HashMap<>();
+    private final Map subs = new HashMap<>();
 
     public final void addBase(String name, TestTypes.Base value) {
       bases.put(name, value);
diff --git a/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java b/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
index 7ecbffc8..a179fa8e 100644
--- a/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
@@ -49,7 +49,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
   }
 
   public void testListOfSubclassFields() {
-    Collection list = new ArrayList();
+    Collection list = new ArrayList<>();
     list.add(new Base(1));
     list.add(new Sub(2, 3));
     ClassWithContainersOfBaseFields target = new ClassWithContainersOfBaseFields(list, null);
@@ -59,7 +59,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
   }
 
   public void testMapOfSubclassFields() {
-    Map map = new HashMap();
+    Map map = new HashMap<>();
     map.put("base", new Base(1));
     map.put("sub", new Sub(2, 3));
     ClassWithContainersOfBaseFields target = new ClassWithContainersOfBaseFields(null, map);
@@ -75,7 +75,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
    */
   public void testParameterizedSubclassFields() {
     ClassWithParameterizedBaseFields target = new ClassWithParameterizedBaseFields(
-        new ParameterizedSub("one", "two"));
+        new ParameterizedSub<>("one", "two"));
     String json = gson.toJson(target);
     assertTrue(json.contains("\"t\":\"one\""));
     assertFalse(json.contains("\"s\""));
@@ -86,9 +86,9 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
    * the declared type
    */
   public void testListOfParameterizedSubclassFields() {
-    Collection> list = new ArrayList>();
-    list.add(new ParameterizedBase("one"));
-    list.add(new ParameterizedSub("two", "three"));
+    Collection> list = new ArrayList<>();
+    list.add(new ParameterizedBase<>("one"));
+    list.add(new ParameterizedSub<>("two", "three"));
     ClassWithContainersOfParameterizedBaseFields target =
       new ClassWithContainersOfParameterizedBaseFields(list, null);
     String json = gson.toJson(target);
@@ -101,9 +101,9 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
    * declared type
    */
   public void testMapOfParameterizedSubclassFields() {
-    Map> map = new HashMap>();
-    map.put("base", new ParameterizedBase("one"));
-    map.put("sub", new ParameterizedSub("two", "three"));
+    Map> map = new HashMap<>();
+    map.put("base", new ParameterizedBase<>("one"));
+    map.put("sub", new ParameterizedSub<>("two", "three"));
     ClassWithContainersOfParameterizedBaseFields target =
       new ClassWithContainersOfParameterizedBaseFields(null, map);
     JsonObject json = gson.toJsonTree(target).getAsJsonObject().get("map").getAsJsonObject();
diff --git a/gson/src/test/java/com/google/gson/functional/ObjectTest.java b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
index 6222cc2d..e9aa15b2 100644
--- a/gson/src/test/java/com/google/gson/functional/ObjectTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
@@ -117,7 +117,7 @@ public class ObjectTest extends TestCase {
   }
 
   public void testClassWithTransientFieldsSerialization() throws Exception {
-    ClassWithTransientFields target = new ClassWithTransientFields(1L);
+    ClassWithTransientFields target = new ClassWithTransientFields<>(1L);
     assertEquals(target.getExpectedJson(), gson.toJson(target));
   }
 
@@ -259,7 +259,7 @@ public class ObjectTest extends TestCase {
   }
 
   private static class ClassWithCollectionField {
-    Collection children = new ArrayList();
+    Collection children = new ArrayList<>();
   }
 
   public void testPrimitiveArrayInAnObjectDeserialization() throws Exception {
@@ -497,7 +497,7 @@ public class ObjectTest extends TestCase {
   }
 
   public class HasObjectMap {
-    Map map = new HashMap();
+    Map map = new HashMap<>();
   }
 
   static final class Department {
@@ -506,7 +506,7 @@ public class ObjectTest extends TestCase {
   }
 
   static final class Product {
-    private List attributes = new ArrayList();
-    private List departments = new ArrayList();
+    private List attributes = new ArrayList<>();
+    private List departments = new ArrayList<>();
   }
 }
diff --git a/gson/src/test/java/com/google/gson/functional/ParameterizedTypesTest.java b/gson/src/test/java/com/google/gson/functional/ParameterizedTypesTest.java
index ef805655..8decc640 100644
--- a/gson/src/test/java/com/google/gson/functional/ParameterizedTypesTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ParameterizedTypesTest.java
@@ -52,7 +52,7 @@ public class ParameterizedTypesTest extends TestCase {
   }
 
   public void testParameterizedTypesSerialization() throws Exception {
-    MyParameterizedType src = new MyParameterizedType(10);
+    MyParameterizedType src = new MyParameterizedType<>(10);
     Type typeOfSrc = new TypeToken>() {}.getType();
     String json = gson.toJson(src, typeOfSrc);
     assertEquals(src.getExpectedJson(), json);
@@ -60,11 +60,11 @@ public class ParameterizedTypesTest extends TestCase {
 
   public void testParameterizedTypeDeserialization() throws Exception {
     BagOfPrimitives bag = new BagOfPrimitives();
-    MyParameterizedType expected = new MyParameterizedType(bag);
+    MyParameterizedType expected = new MyParameterizedType<>(bag);
     Type expectedType = new TypeToken>() {}.getType();
     BagOfPrimitives bagDefaultInstance = new BagOfPrimitives();
     Gson gson = new GsonBuilder().registerTypeAdapter(
-        expectedType, new MyParameterizedTypeInstanceCreator(bagDefaultInstance))
+        expectedType, new MyParameterizedTypeInstanceCreator<>(bagDefaultInstance))
         .create();
 
     String json = expected.getExpectedJson();
@@ -74,8 +74,7 @@ public class ParameterizedTypesTest extends TestCase {
 
   public void testTypesWithMultipleParametersSerialization() throws Exception {
     MultiParameters src =
-        new MultiParameters(10, 1.0F, 2.1D,
-            "abc", new BagOfPrimitives());
+        new MultiParameters<>(10, 1.0F, 2.1D, "abc", new BagOfPrimitives());
     Type typeOfSrc = new TypeToken>() {}.getType();
     String json = gson.toJson(src, typeOfSrc);
@@ -92,8 +91,7 @@ public class ParameterizedTypesTest extends TestCase {
     MultiParameters target =
         gson.fromJson(json, typeOfTarget);
     MultiParameters expected =
-        new MultiParameters(10, 1.0F, 2.1D,
-            "abc", new BagOfPrimitives());
+        new MultiParameters<>(10, 1.0F, 2.1D, "abc", new BagOfPrimitives());
     assertEquals(expected, target);
   }
 
@@ -104,11 +102,11 @@ public class ParameterizedTypesTest extends TestCase {
         .registerTypeAdapter(ptIntegerType, new MyParameterizedTypeAdapter())
         .registerTypeAdapter(ptStringType, new MyParameterizedTypeAdapter())
         .create();
-    MyParameterizedType intTarget = new MyParameterizedType(10);
+    MyParameterizedType intTarget = new MyParameterizedType<>(10);
     String json = gson.toJson(intTarget, ptIntegerType);
     assertEquals(MyParameterizedTypeAdapter.getExpectedJson(intTarget), json);
 
-    MyParameterizedType stringTarget = new MyParameterizedType("abc");
+    MyParameterizedType stringTarget = new MyParameterizedType<>("abc");
     json = gson.toJson(stringTarget, ptStringType);
     assertEquals(MyParameterizedTypeAdapter.getExpectedJson(stringTarget), json);
   }
@@ -119,17 +117,16 @@ public class ParameterizedTypesTest extends TestCase {
     Gson gson = new GsonBuilder().registerTypeAdapter(
         ptIntegerType, new MyParameterizedTypeAdapter())
         .registerTypeAdapter(ptStringType, new MyParameterizedTypeAdapter())
-        .registerTypeAdapter(ptStringType, new MyParameterizedTypeInstanceCreator(""))
-        .registerTypeAdapter(ptIntegerType,
-            new MyParameterizedTypeInstanceCreator(0))
+        .registerTypeAdapter(ptStringType, new MyParameterizedTypeInstanceCreator<>(""))
+        .registerTypeAdapter(ptIntegerType, new MyParameterizedTypeInstanceCreator<>(0))
         .create();
 
-    MyParameterizedType src = new MyParameterizedType(10);
+    MyParameterizedType src = new MyParameterizedType<>(10);
     String json = MyParameterizedTypeAdapter.getExpectedJson(src);
     MyParameterizedType intTarget = gson.fromJson(json, ptIntegerType);
     assertEquals(10, intTarget.value.intValue());
 
-    MyParameterizedType srcStr = new MyParameterizedType("abc");
+    MyParameterizedType srcStr = new MyParameterizedType<>("abc");
     json = MyParameterizedTypeAdapter.getExpectedJson(srcStr);
     MyParameterizedType stringTarget = gson.fromJson(json, ptStringType);
     assertEquals("abc", stringTarget.value);
@@ -137,7 +134,7 @@ public class ParameterizedTypesTest extends TestCase {
 
   public void testParameterizedTypesWithWriterSerialization() throws Exception {
     Writer writer = new StringWriter();
-    MyParameterizedType src = new MyParameterizedType(10);
+    MyParameterizedType src = new MyParameterizedType<>(10);
     Type typeOfSrc = new TypeToken>() {}.getType();
     gson.toJson(src, typeOfSrc, writer);
     assertEquals(src.getExpectedJson(), writer.toString());
@@ -145,11 +142,11 @@ public class ParameterizedTypesTest extends TestCase {
 
   public void testParameterizedTypeWithReaderDeserialization() throws Exception {
     BagOfPrimitives bag = new BagOfPrimitives();
-    MyParameterizedType expected = new MyParameterizedType(bag);
+    MyParameterizedType expected = new MyParameterizedType<>(bag);
     Type expectedType = new TypeToken>() {}.getType();
     BagOfPrimitives bagDefaultInstance = new BagOfPrimitives();
     Gson gson = new GsonBuilder().registerTypeAdapter(
-        expectedType, new MyParameterizedTypeInstanceCreator(bagDefaultInstance))
+        expectedType, new MyParameterizedTypeInstanceCreator<>(bagDefaultInstance))
         .create();
 
     Reader json = new StringReader(expected.getExpectedJson());
@@ -161,14 +158,14 @@ public class ParameterizedTypesTest extends TestCase {
   public void testVariableTypeFieldsAndGenericArraysSerialization() throws Exception {
     Integer obj = 0;
     Integer[] array = { 1, 2, 3 };
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add(4);
     list.add(5);
     List[] arrayOfLists = new List[] { list, list };
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(obj, array, list, arrayOfLists, list, arrayOfLists);
+        new ObjectWithTypeVariables<>(obj, array, list, arrayOfLists, list, arrayOfLists);
     String json = gson.toJson(objToSerialize, typeOfSrc);
 
     assertEquals(objToSerialize.getExpectedJson(), json);
@@ -178,14 +175,14 @@ public class ParameterizedTypesTest extends TestCase {
   public void testVariableTypeFieldsAndGenericArraysDeserialization() throws Exception {
     Integer obj = 0;
     Integer[] array = { 1, 2, 3 };
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add(4);
     list.add(5);
     List[] arrayOfLists = new List[] { list, list };
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(obj, array, list, arrayOfLists, list, arrayOfLists);
+        new ObjectWithTypeVariables<>(obj, array, list, arrayOfLists, list, arrayOfLists);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     ObjectWithTypeVariables objAfterDeserialization = gson.fromJson(json, typeOfSrc);
 
@@ -195,7 +192,7 @@ public class ParameterizedTypesTest extends TestCase {
   public void testVariableTypeDeserialization() throws Exception {
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(0, null, null, null, null, null);
+        new ObjectWithTypeVariables<>(0, null, null, null, null, null);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     ObjectWithTypeVariables objAfterDeserialization = gson.fromJson(json, typeOfSrc);
 
@@ -207,7 +204,7 @@ public class ParameterizedTypesTest extends TestCase {
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(null, array, null, null, null, null);
+        new ObjectWithTypeVariables<>(null, array, null, null, null, null);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     ObjectWithTypeVariables objAfterDeserialization = gson.fromJson(json, typeOfSrc);
 
@@ -215,13 +212,13 @@ public class ParameterizedTypesTest extends TestCase {
   }
 
   public void testParameterizedTypeWithVariableTypeDeserialization() throws Exception {
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add(4);
     list.add(5);
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(null, null, list, null, null, null);
+        new ObjectWithTypeVariables<>(null, null, list, null, null, null);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     ObjectWithTypeVariables objAfterDeserialization = gson.fromJson(json, typeOfSrc);
 
@@ -230,28 +227,28 @@ public class ParameterizedTypesTest extends TestCase {
 
   @SuppressWarnings("unchecked")
   public void testParameterizedTypeGenericArraysSerialization() throws Exception {
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add(1);
     list.add(2);
     List[] arrayOfLists = new List[] { list, list };
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(null, null, null, arrayOfLists, null, null);
+        new ObjectWithTypeVariables<>(null, null, null, arrayOfLists, null, null);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     assertEquals("{\"arrayOfListOfTypeParameters\":[[1,2],[1,2]]}", json);
   }
 
   @SuppressWarnings("unchecked")
   public void testParameterizedTypeGenericArraysDeserialization() throws Exception {
-    List list = new ArrayList();
+    List list = new ArrayList<>();
     list.add(1);
     list.add(2);
     List[] arrayOfLists = new List[] { list, list };
 
     Type typeOfSrc = new TypeToken>() {}.getType();
     ObjectWithTypeVariables objToSerialize =
-        new ObjectWithTypeVariables(null, null, null, arrayOfLists, null, null);
+        new ObjectWithTypeVariables<>(null, null, null, arrayOfLists, null, null);
     String json = gson.toJson(objToSerialize, typeOfSrc);
     ObjectWithTypeVariables objAfterDeserialization = gson.fromJson(json, typeOfSrc);
 
@@ -487,7 +484,7 @@ public class ParameterizedTypesTest extends TestCase {
   }
   
   public void testDeepParameterizedTypeSerialization() {
-    Amount amount = new Amount();
+    Amount amount = new Amount<>();
     String json = gson.toJson(amount);
     assertTrue(json.contains("value"));
     assertTrue(json.contains("30"));
diff --git a/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java b/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
index 0aacc9e2..58827b41 100644
--- a/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
@@ -50,7 +50,7 @@ public class PrettyPrintingTest extends TestCase {
 
   public void testPrettyPrintList() {
     BagOfPrimitives b = new BagOfPrimitives();
-    List listOfB = new LinkedList();
+    List listOfB = new LinkedList<>();
     for (int i = 0; i < 15; ++i) {
       listOfB.add(b);
     }
@@ -88,7 +88,7 @@ public class PrettyPrintingTest extends TestCase {
   }
   
   public void testMap() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("abc", 1);
     map.put("def", 5);
     String json = gson.toJson(map);
@@ -98,7 +98,7 @@ public class PrettyPrintingTest extends TestCase {
   // In response to bug 153
   public void testEmptyMapField() {
     ClassWithMap obj = new ClassWithMap();
-    obj.map = new LinkedHashMap();
+    obj.map = new LinkedHashMap<>();
     String json = gson.toJson(obj);
     assertTrue(json.contains("{\n  \"map\": {},\n  \"value\": 2\n}"));
   }
diff --git a/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java b/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
index d5e8883e..7876999d 100644
--- a/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
+++ b/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
@@ -51,7 +51,7 @@ public class RawSerializationTest extends TestCase {
   }
 
   public void testParameterizedObject() {
-    Bar bar = new Bar(new Foo(1));
+    Bar bar = new Bar<>(new Foo(1));
     String expectedJson = "{\"t\":{\"b\":1}}";
     // Ensure that serialization works without specifying the type explicitly
     String json = gson.toJson(bar);
@@ -62,7 +62,7 @@ public class RawSerializationTest extends TestCase {
   }
 
   public void testTwoLevelParameterizedObject() {
-    Bar> bar = new Bar>(new Bar(new Foo(1)));
+    Bar> bar = new Bar<>(new Bar<>(new Foo(1)));
     String expectedJson = "{\"t\":{\"t\":{\"b\":1}}}";
     // Ensure that serialization works without specifying the type explicitly
     String json = gson.toJson(bar);
@@ -73,7 +73,7 @@ public class RawSerializationTest extends TestCase {
   }
 
   public void testThreeLevelParameterizedObject() {
-    Bar>> bar = new Bar>>(new Bar>(new Bar(new Foo(1))));
+    Bar>> bar = new Bar<>(new Bar<>(new Bar<>(new Foo(1))));
     String expectedJson = "{\"t\":{\"t\":{\"t\":{\"b\":1}}}}";
     // Ensure that serialization works without specifying the type explicitly
     String json = gson.toJson(bar);
diff --git a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
index 1284e2c9..0c6bd07a 100644
--- a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
@@ -89,8 +89,8 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
   static class RuntimeTypeAdapterFactory implements TypeAdapterFactory {
     private final Class baseType;
     private final String typeFieldName;
-    private final Map> labelToSubtype = new LinkedHashMap>();
-    private final Map, String> subtypeToLabel = new LinkedHashMap, String>();
+    private final Map> labelToSubtype = new LinkedHashMap<>();
+    private final Map, String> subtypeToLabel = new LinkedHashMap<>();
 
     protected RuntimeTypeAdapterFactory(Class baseType, String typeFieldName) {
       if (typeFieldName == null || baseType == null) {
@@ -105,7 +105,7 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
      * typeFieldName} as the type field name. Type field names are case sensitive.
      */
     public static  RuntimeTypeAdapterFactory of(Class baseType, String typeFieldName) {
-      return new RuntimeTypeAdapterFactory(baseType, typeFieldName);
+      return new RuntimeTypeAdapterFactory<>(baseType, typeFieldName);
     }
 
     /**
@@ -113,7 +113,7 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
      * the type field name.
      */
     public static  RuntimeTypeAdapterFactory of(Class baseType) {
-      return new RuntimeTypeAdapterFactory(baseType, "type");
+      return new RuntimeTypeAdapterFactory<>(baseType, "type");
     }
 
     /**
@@ -151,10 +151,8 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
         return null;
       }
 
-      final Map> labelToDelegate
-          = new LinkedHashMap>();
-      final Map, TypeAdapter> subtypeToDelegate
-          = new LinkedHashMap, TypeAdapter>();
+      final Map> labelToDelegate = new LinkedHashMap<>();
+      final Map, TypeAdapter> subtypeToDelegate = new LinkedHashMap<>();
       for (Map.Entry> entry : labelToSubtype.entrySet()) {
         TypeAdapter delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue()));
         labelToDelegate.put(entry.getKey(), delegate);
diff --git a/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
index cbe339a9..68844120 100644
--- a/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
@@ -112,14 +112,14 @@ public final class StreamingTypeAdaptersTest extends TestCase {
   }
 
   public void testSerializeMap() {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", 5.0);
     map.put("b", 10.0);
     assertEquals("{'a':5.0,'b':10.0}", mapAdapter.toJson(map).replace('"', '\''));
   }
 
   public void testDeserializeMap() throws IOException {
-    Map map = new LinkedHashMap();
+    Map map = new LinkedHashMap<>();
     map.put("a", 5.0);
     map.put("b", 10.0);
     assertEquals(map, mapAdapter.fromJson("{'a':5.0,'b':10.0}".replace('\'', '\"')));
@@ -163,7 +163,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
         Person.class, typeAdapter).create();
     Truck truck = new Truck();
     truck.horsePower = 1.0D;
-    truck.passengers = new ArrayList();
+    truck.passengers = new ArrayList<>();
     truck.passengers.add(null);
     truck.passengers.add(new Person("jesse", 30));
     try {
diff --git a/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
index 07d99b81..3e261d56 100644
--- a/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
@@ -95,7 +95,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
         .setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
         .setNumberToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
         .create();
-    List expected = new LinkedList();
+    List expected = new LinkedList<>();
     expected.add(null);
     expected.add(10L);
     expected.add(10.0);
diff --git a/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
index afcc4bcc..f82d92e4 100644
--- a/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
@@ -39,14 +39,14 @@ import com.google.gson.reflect.TypeToken;
  * Collection of functional tests for DOM tree based type adapters.
  */
 public class TreeTypeAdaptersTest extends TestCase {
-  private static final Id STUDENT1_ID = new Id("5", Student.class);
-  private static final Id STUDENT2_ID = new Id("6", Student.class);
+  private static final Id STUDENT1_ID = new Id<>("5", Student.class);
+  private static final Id STUDENT2_ID = new Id<>("6", Student.class);
   private static final Student STUDENT1 = new Student(STUDENT1_ID, "first");
   private static final Student STUDENT2 = new Student(STUDENT2_ID, "second");
   private static final Type TYPE_COURSE_HISTORY =
     new TypeToken>(){}.getType(); 
   private static final Id> COURSE_ID =
-      new Id>("10", TYPE_COURSE_HISTORY);
+      new Id<>("10", TYPE_COURSE_HISTORY);
 
   private Gson gson;
   private Course course;
@@ -56,7 +56,7 @@ public class TreeTypeAdaptersTest extends TestCase {
     gson = new GsonBuilder()
         .registerTypeAdapter(Id.class, new IdTreeTypeAdapter())
         .create();
-    course = new Course(COURSE_ID, 4,
+    course = new Course<>(COURSE_ID, 4,
         new Assignment(null, null), Arrays.asList(STUDENT1, STUDENT2));
   }
 
diff --git a/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java b/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
index 2d7503eb..e5a4d8ba 100644
--- a/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
@@ -38,7 +38,7 @@ public class TypeVariableTest extends TestCase {
   public void testAdvancedTypeVariables() throws Exception {
     Gson gson = new Gson();
     Bar bar1 = new Bar("someString", 1, true);
-    ArrayList arrayList = new ArrayList();
+    ArrayList arrayList = new ArrayList<>();
     arrayList.add(1);
     arrayList.add(2);
     arrayList.add(3);
@@ -52,7 +52,7 @@ public class TypeVariableTest extends TestCase {
 
   public void testTypeVariablesViaTypeParameter() throws Exception {
     Gson gson = new Gson();
-    Foo original = new Foo("e", 5, false);
+    Foo original = new Foo<>("e", 5, false);
     original.map.put("f", Arrays.asList(6, 7));
     Type type = new TypeToken>() {}.getType();
     String json = gson.toJson(original, type);
@@ -103,7 +103,7 @@ public class TypeVariableTest extends TestCase {
   public static class Foo extends Red {
     private S someSField;
     private T someTField;
-    public final Map> map = new HashMap>();
+    public final Map> map = new HashMap<>();
 
     public Foo() {}
 
diff --git a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
index fa8b08c3..ee1bb102 100644
--- a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
+++ b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java
@@ -35,7 +35,7 @@ import com.google.gson.common.MoreAsserts;
 public final class LinkedTreeMapTest extends TestCase {
 
   public void testIterationOrder() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "android");
     map.put("c", "cola");
     map.put("b", "bbq");
@@ -44,7 +44,7 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testRemoveRootDoesNotDoubleUnlink() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "android");
     map.put("c", "cola");
     map.put("b", "bbq");
@@ -57,7 +57,7 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testPutNullKeyFails() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     try {
       map.put(null, "android");
       fail();
@@ -66,7 +66,7 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testPutNonComparableKeyFails() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     try {
       map.put(new Object(), "android");
       fail();
@@ -74,19 +74,19 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testContainsNonComparableKeyReturnsFalse() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "android");
     assertFalse(map.containsKey(new Object()));
   }
 
   public void testContainsNullKeyIsAlwaysFalse() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "android");
     assertFalse(map.containsKey(null));
   }
 
   public void testPutOverrides() throws Exception {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     assertNull(map.put("d", "donut"));
     assertNull(map.put("e", "eclair"));
     assertNull(map.put("f", "froyo"));
@@ -98,7 +98,7 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testEmptyStringValues() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "");
     assertTrue(map.containsKey("a"));
     assertEquals("", map.get("a"));
@@ -106,7 +106,7 @@ public final class LinkedTreeMapTest extends TestCase {
 
   public void testLargeSetOfRandomKeys() throws Exception {
     Random random = new Random(1367593214724L);
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     String[] keys = new String[1000];
     for (int i = 0; i < keys.length; i++) {
       keys[i] = Integer.toString(Math.abs(random.nextInt()), 36) + "-" + i;
@@ -121,7 +121,7 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testClear() {
-    LinkedTreeMap map = new LinkedTreeMap();
+    LinkedTreeMap map = new LinkedTreeMap<>();
     map.put("a", "android");
     map.put("c", "cola");
     map.put("b", "bbq");
@@ -131,13 +131,13 @@ public final class LinkedTreeMapTest extends TestCase {
   }
 
   public void testEqualsAndHashCode() throws Exception {
-    LinkedTreeMap map1 = new LinkedTreeMap();
+    LinkedTreeMap map1 = new LinkedTreeMap<>();
     map1.put("A", 1);
     map1.put("B", 2);
     map1.put("C", 3);
     map1.put("D", 4);
 
-    LinkedTreeMap map2 = new LinkedTreeMap();
+    LinkedTreeMap map2 = new LinkedTreeMap<>();
     map2.put("C", 3);
     map2.put("B", 2);
     map2.put("D", 4);
@@ -149,7 +149,7 @@ public final class LinkedTreeMapTest extends TestCase {
   public void testJavaSerialization() throws IOException, ClassNotFoundException {
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ObjectOutputStream objOut = new ObjectOutputStream(out);
-    Map map = new LinkedTreeMap();
+    Map map = new LinkedTreeMap<>();
     map.put("a", 1);
     objOut.writeObject(map);
     objOut.close();
@@ -162,7 +162,7 @@ public final class LinkedTreeMapTest extends TestCase {
 
   @SafeVarargs
   private final  void assertIterationOrder(Iterable actual, T... expected) {
-    ArrayList actualList = new ArrayList();
+    ArrayList actualList = new ArrayList<>();
     for (T t : actual) {
       actualList.add(t);
     }
diff --git a/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java b/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
index d05cf4be..61e69a38 100644
--- a/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
+++ b/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
@@ -113,7 +113,7 @@ public class PerformanceTest extends TestCase {
    */
   public void disabled_testLargeCollectionSerialization() {
     int count = 1400000;
-    List list = new ArrayList(count);
+    List list = new ArrayList<>(count);
     for (int i = 0; i < count; ++i) {
       list.add(new CollectionEntry("name"+i,"value"+i));
     }    
@@ -219,7 +219,7 @@ public class PerformanceTest extends TestCase {
   }
   
   public void disable_testLargeObjectSerializationAndDeserialization() {
-    Map largeObject = new HashMap();
+    Map largeObject = new HashMap<>();
     for (long l = 0; l < 100000; l++) {
       largeObject.put("field" + l, l);
     }
@@ -265,7 +265,7 @@ public class PerformanceTest extends TestCase {
   }
 
   public void disabled_testLargeGsonMapRoundTrip() throws Exception {
-    Map original = new HashMap();
+    Map original = new HashMap<>();
     for (long i = 0; i < 1000000; i++) {
       original.put(i, i + 1);
     }
@@ -298,7 +298,7 @@ public class PerformanceTest extends TestCase {
   @SuppressWarnings("unused")
   private static final class ClassWithList { 
     final String field; 
-    final List list = new ArrayList(COLLECTION_SIZE);
+    final List list = new ArrayList<>(COLLECTION_SIZE);
     ClassWithList() {
       this(null);
     }
@@ -323,7 +323,7 @@ public class PerformanceTest extends TestCase {
     @Expose 
     final String field; 
     @Expose 
-    final List list = new ArrayList(COLLECTION_SIZE);
+    final List list = new ArrayList<>(COLLECTION_SIZE);
     ClassWithListOfObjects() {
       this(null);
     }
diff --git a/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java b/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
index a197243f..e327895c 100644
--- a/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
+++ b/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
@@ -46,7 +46,7 @@ public class JsonAdapterNullSafeTest extends TestCase {
     static final class JsonAdapterFactory implements TypeAdapterFactory {
       // The recursiveCall in {@link Device.JsonAdapterFactory} is the source of this bug
       // because we use it to return a null type adapter on a recursive call.
-      private static final ThreadLocal recursiveCall = new ThreadLocal();
+      private static final ThreadLocal recursiveCall = new ThreadLocal<>();
 
       @Override public  TypeAdapter create(final Gson gson, TypeToken type) {
         if (type.getRawType() != Device.class || recursiveCall.get() != null) {
diff --git a/gson/src/test/java/com/google/gson/regression/OSGiTest.java b/gson/src/test/java/com/google/gson/regression/OSGiTest.java
index 64a7e371..c41b12f4 100644
--- a/gson/src/test/java/com/google/gson/regression/OSGiTest.java
+++ b/gson/src/test/java/com/google/gson/regression/OSGiTest.java
@@ -47,7 +47,7 @@ public class OSGiTest extends TestCase {
     }
 
     private Manifest findManifest(String pkg) throws IOException {
-        List urls = new ArrayList();
+        List urls = new ArrayList<>();
         for (URL u : Collections.list(getClass().getClassLoader().getResources("META-INF/MANIFEST.MF"))) {
             InputStream is = u.openStream();
             Manifest mf = new Manifest(is);
diff --git a/metrics/src/main/java/com/google/gson/metrics/CollectionsDeserializationBenchmark.java b/metrics/src/main/java/com/google/gson/metrics/CollectionsDeserializationBenchmark.java
index 57b5d630..dad0d99a 100644
--- a/metrics/src/main/java/com/google/gson/metrics/CollectionsDeserializationBenchmark.java
+++ b/metrics/src/main/java/com/google/gson/metrics/CollectionsDeserializationBenchmark.java
@@ -44,7 +44,7 @@ public class CollectionsDeserializationBenchmark {
   @BeforeExperiment
   void setUp() throws Exception {
     this.gson = new Gson();
-    List bags = new ArrayList();
+    List bags = new ArrayList<>();
     for (int i = 0; i < 100; ++i) {
       bags.add(new BagOfPrimitives(10L, 1, false, "foo"));
     }
@@ -68,7 +68,7 @@ public class CollectionsDeserializationBenchmark {
       StringReader reader = new StringReader(json);
       JsonReader jr = new JsonReader(reader);
       jr.beginArray();
-      List bags = new ArrayList();
+      List bags = new ArrayList<>();
       while(jr.hasNext()) {
         jr.beginObject();
         long longValue = 0;
@@ -106,7 +106,7 @@ public class CollectionsDeserializationBenchmark {
       StringReader reader = new StringReader(json);
       JsonReader jr = new JsonReader(reader);
       jr.beginArray();
-      List bags = new ArrayList();
+      List bags = new ArrayList<>();
       while(jr.hasNext()) {
         jr.beginObject();
         BagOfPrimitives bag = new BagOfPrimitives();
diff --git a/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java b/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
index 742916b9..4b38c7c4 100644
--- a/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
+++ b/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
@@ -97,8 +97,8 @@ public class ProtoTypeAdapter
 
     private Builder(EnumSerialization enumSerialization, CaseFormat fromFieldNameFormat,
         CaseFormat toFieldNameFormat) {
-      this.serializedNameExtensions = new HashSet>();
-      this.serializedEnumValueExtensions = new HashSet>();
+      this.serializedNameExtensions = new HashSet<>();
+      this.serializedEnumValueExtensions = new HashSet<>();
       setEnumSerialization(enumSerialization);
       setFieldNameSerializationFormat(fromFieldNameFormat, toFieldNameFormat);
     }
@@ -280,7 +280,7 @@ public class ProtoTypeAdapter
               if (jsonElement.isJsonArray()) {
                 // Handling array
                 Collection enumCollection =
-                    new ArrayList(jsonElement.getAsJsonArray().size());
+                    new ArrayList<>(jsonElement.getAsJsonArray().size());
                 for (JsonElement element : jsonElement.getAsJsonArray()) {
                   enumCollection.add(
                       findValueByNameAndExtension(fieldDescriptor.getEnumType(), element));