From 00ef83a6ab532f7d327ddac16c74551e241cb072 Mon Sep 17 00:00:00 2001 From: Remi Forax Date: Tue, 17 Apr 2012 12:21:56 -0700 Subject: [PATCH] 7157893: Warnings Cleanup in java.util.* Minor code changes to cleanup warnings in java.util.* Reviewed-by: mduigou, naoto, smarks --- .../classes/java/util/AbstractCollection.java | 2 + .../share/classes/java/util/AbstractList.java | 2 +- .../share/classes/java/util/AbstractMap.java | 8 +- .../share/classes/java/util/AbstractSet.java | 2 +- .../share/classes/java/util/ArrayDeque.java | 4 +- .../share/classes/java/util/ArrayList.java | 3 +- jdk/src/share/classes/java/util/Arrays.java | 17 +- jdk/src/share/classes/java/util/Calendar.java | 4 +- .../share/classes/java/util/Collections.java | 42 +++-- .../classes/java/util/ComparableTimSort.java | 13 +- jdk/src/share/classes/java/util/Currency.java | 2 +- jdk/src/share/classes/java/util/EnumMap.java | 36 +++-- jdk/src/share/classes/java/util/EnumSet.java | 18 ++- jdk/src/share/classes/java/util/HashMap.java | 92 ++++++----- jdk/src/share/classes/java/util/HashSet.java | 6 +- .../share/classes/java/util/Hashtable.java | 125 ++++++++------- .../classes/java/util/IdentityHashMap.java | 34 ++-- .../IllegalFormatConversionException.java | 2 +- .../share/classes/java/util/JumboEnumSet.java | 19 +-- .../classes/java/util/LinkedHashMap.java | 10 +- .../share/classes/java/util/Observable.java | 4 +- .../classes/java/util/PriorityQueue.java | 20 ++- .../share/classes/java/util/Properties.java | 22 +-- .../classes/java/util/PropertyPermission.java | 27 ++-- .../classes/java/util/RegularEnumSet.java | 21 +-- .../classes/java/util/ResourceBundle.java | 7 +- .../classes/java/util/ServiceLoader.java | 10 +- jdk/src/share/classes/java/util/TimeZone.java | 6 +- jdk/src/share/classes/java/util/TreeMap.java | 149 +++++++++--------- jdk/src/share/classes/java/util/TreeSet.java | 14 +- .../share/classes/java/util/WeakHashMap.java | 2 +- 31 files changed, 410 insertions(+), 313 deletions(-) diff --git a/jdk/src/share/classes/java/util/AbstractCollection.java b/jdk/src/share/classes/java/util/AbstractCollection.java index a32d41156a3..3824f390463 100644 --- a/jdk/src/share/classes/java/util/AbstractCollection.java +++ b/jdk/src/share/classes/java/util/AbstractCollection.java @@ -170,6 +170,7 @@ public abstract class AbstractCollection implements Collection { * @throws ArrayStoreException {@inheritDoc} * @throws NullPointerException {@inheritDoc} */ + @SuppressWarnings("unchecked") public T[] toArray(T[] a) { // Estimate size of array; be prepared to see more or fewer elements int size = size(); @@ -216,6 +217,7 @@ public abstract class AbstractCollection implements Collection { * @return array containing the elements in the given array, plus any * further elements returned by the iterator, trimmed to size */ + @SuppressWarnings("unchecked") private static T[] finishToArray(T[] r, Iterator it) { int i = r.length; while (it.hasNext()) { diff --git a/jdk/src/share/classes/java/util/AbstractList.java b/jdk/src/share/classes/java/util/AbstractList.java index 4492166111b..0b605150679 100644 --- a/jdk/src/share/classes/java/util/AbstractList.java +++ b/jdk/src/share/classes/java/util/AbstractList.java @@ -516,7 +516,7 @@ public abstract class AbstractList extends AbstractCollection implements L return false; ListIterator e1 = listIterator(); - ListIterator e2 = ((List) o).listIterator(); + ListIterator e2 = ((List) o).listIterator(); while (e1.hasNext() && e2.hasNext()) { E o1 = e1.next(); Object o2 = e2.next(); diff --git a/jdk/src/share/classes/java/util/AbstractMap.java b/jdk/src/share/classes/java/util/AbstractMap.java index a3ad3d3497a..aba5048becd 100644 --- a/jdk/src/share/classes/java/util/AbstractMap.java +++ b/jdk/src/share/classes/java/util/AbstractMap.java @@ -443,7 +443,7 @@ public abstract class AbstractMap implements Map { if (!(o instanceof Map)) return false; - Map m = (Map) o; + Map m = (Map) o; if (m.size() != size()) return false; @@ -534,7 +534,7 @@ public abstract class AbstractMap implements Map { * @return a shallow copy of this map */ protected Object clone() throws CloneNotSupportedException { - AbstractMap result = (AbstractMap)super.clone(); + AbstractMap result = (AbstractMap)super.clone(); result.keySet = null; result.values = null; return result; @@ -652,7 +652,7 @@ public abstract class AbstractMap implements Map { public boolean equals(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; return eq(key, e.getKey()) && eq(value, e.getValue()); } @@ -783,7 +783,7 @@ public abstract class AbstractMap implements Map { public boolean equals(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; return eq(key, e.getKey()) && eq(value, e.getValue()); } diff --git a/jdk/src/share/classes/java/util/AbstractSet.java b/jdk/src/share/classes/java/util/AbstractSet.java index 1f1a49c250e..03e45ba38c0 100644 --- a/jdk/src/share/classes/java/util/AbstractSet.java +++ b/jdk/src/share/classes/java/util/AbstractSet.java @@ -88,7 +88,7 @@ public abstract class AbstractSet extends AbstractCollection implements Se if (!(o instanceof Set)) return false; - Collection c = (Collection) o; + Collection c = (Collection) o; if (c.size() != size()) return false; try { diff --git a/jdk/src/share/classes/java/util/ArrayDeque.java b/jdk/src/share/classes/java/util/ArrayDeque.java index eb70aaa59cc..8a9a0ee7b8b 100644 --- a/jdk/src/share/classes/java/util/ArrayDeque.java +++ b/jdk/src/share/classes/java/util/ArrayDeque.java @@ -813,7 +813,8 @@ public class ArrayDeque extends AbstractCollection */ public ArrayDeque clone() { try { - ArrayDeque result = (ArrayDeque) super.clone(); + @SuppressWarnings("unchecked") + ArrayDeque result = (ArrayDeque) super.clone(); result.elements = Arrays.copyOf(elements, elements.length); return result; @@ -849,6 +850,7 @@ public class ArrayDeque extends AbstractCollection /** * Deserialize this deque. */ + @SuppressWarnings("unchecked") private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); diff --git a/jdk/src/share/classes/java/util/ArrayList.java b/jdk/src/share/classes/java/util/ArrayList.java index 3b029272753..eb44bd959ee 100644 --- a/jdk/src/share/classes/java/util/ArrayList.java +++ b/jdk/src/share/classes/java/util/ArrayList.java @@ -300,8 +300,7 @@ public class ArrayList extends AbstractList */ public Object clone() { try { - @SuppressWarnings("unchecked") - ArrayList v = (ArrayList) super.clone(); + ArrayList v = (ArrayList) super.clone(); v.elementData = Arrays.copyOf(elementData, size); v.modCount = 0; return v; diff --git a/jdk/src/share/classes/java/util/Arrays.java b/jdk/src/share/classes/java/util/Arrays.java index fd408e27b60..d0c3a60a05a 100644 --- a/jdk/src/share/classes/java/util/Arrays.java +++ b/jdk/src/share/classes/java/util/Arrays.java @@ -560,6 +560,7 @@ public class Arrays { * off is the offset to generate corresponding low, high in src * To be removed in a future release. */ + @SuppressWarnings({ "unchecked", "rawtypes" }) private static void mergeSort(Object[] src, Object[] dest, int low, @@ -746,6 +747,7 @@ public class Arrays { * off is the offset into src corresponding to low in dest * To be removed in a future release. */ + @SuppressWarnings({ "rawtypes", "unchecked" }) private static void mergeSort(Object[] src, Object[] dest, int low, int high, int off, @@ -1477,8 +1479,10 @@ public class Arrays { while (low <= high) { int mid = (low + high) >>> 1; - Comparable midVal = (Comparable)a[mid]; - int cmp = midVal.compareTo(key); + @SuppressWarnings("rawtypes") + Comparable midVal = (Comparable)a[mid]; + @SuppressWarnings("unchecked") + int cmp = midVal.compareTo(key); if (cmp < 0) low = mid + 1; @@ -2215,6 +2219,7 @@ public class Arrays { * @throws NullPointerException if original is null * @since 1.6 */ + @SuppressWarnings("unchecked") public static T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength, original.getClass()); } @@ -2242,6 +2247,7 @@ public class Arrays { * @since 1.6 */ public static T[] copyOf(U[] original, int newLength, Class newType) { + @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); @@ -2470,8 +2476,9 @@ public class Arrays { * @throws NullPointerException if original is null * @since 1.6 */ + @SuppressWarnings("unchecked") public static T[] copyOfRange(T[] original, int from, int to) { - return copyOfRange(original, from, to, (Class) original.getClass()); + return copyOfRange(original, from, to, (Class) original.getClass()); } /** @@ -2509,6 +2516,7 @@ public class Arrays { int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); + @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); @@ -2851,6 +2859,7 @@ public class Arrays { return a.clone(); } + @SuppressWarnings("unchecked") public T[] toArray(T[] a) { int size = size(); if (a.length < size) @@ -3634,7 +3643,7 @@ public class Arrays { if (element == null) { buf.append("null"); } else { - Class eClass = element.getClass(); + Class eClass = element.getClass(); if (eClass.isArray()) { if (eClass == byte[].class) diff --git a/jdk/src/share/classes/java/util/Calendar.java b/jdk/src/share/classes/java/util/Calendar.java index 21de73437a4..0e04b22fab3 100644 --- a/jdk/src/share/classes/java/util/Calendar.java +++ b/jdk/src/share/classes/java/util/Calendar.java @@ -840,7 +840,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable cachedLocaleData - = new ConcurrentHashMap(3); + = new ConcurrentHashMap<>(3); // Special values of stamp[] /** @@ -1499,7 +1499,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable names = new HashMap(); + Map names = new HashMap<>(); for (int i = 0; i < strings.length; i++) { if (strings[i].length() == 0) { continue; diff --git a/jdk/src/share/classes/java/util/Collections.java b/jdk/src/share/classes/java/util/Collections.java index d18d5682336..53326032680 100644 --- a/jdk/src/share/classes/java/util/Collections.java +++ b/jdk/src/share/classes/java/util/Collections.java @@ -150,6 +150,7 @@ public class Collections { * detects that the natural ordering of the list elements is * found to violate the {@link Comparable} contract */ + @SuppressWarnings("unchecked") public static > void sort(List list) { Object[] a = list.toArray(); Arrays.sort(a); @@ -212,13 +213,14 @@ public class Collections { * @throws IllegalArgumentException (optional) if the comparator is * found to violate the {@link Comparator} contract */ + @SuppressWarnings({ "unchecked", "rawtypes" }) public static void sort(List list, Comparator c) { Object[] a = list.toArray(); Arrays.sort(a, (Comparator)c); - ListIterator i = list.listIterator(); + ListIterator i = list.listIterator(); for (int j=0; j int binarySearch(List list, T key, Comparator c) { if (c==null) - return binarySearch((List) list, key); + return binarySearch((List>) list, key); if (list instanceof RandomAccess || list.size() {} - - /** * Reverses the order of the elements in the specified list.

* @@ -418,12 +418,16 @@ public class Collections { * @throws UnsupportedOperationException if the specified list or * its list-iterator does not support the set operation. */ + @SuppressWarnings({ "rawtypes", "unchecked" }) public static void reverse(List list) { int size = list.size(); if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) { for (int i=0, mid=size>>1, j=size-1; i>1; iset operation. */ + @SuppressWarnings({ "rawtypes", "unchecked" }) public static void shuffle(List list, Random rnd) { int size = list.size(); if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) { @@ -506,6 +511,9 @@ public class Collections { swap(arr, i-1, rnd.nextInt(i)); // Dump array back into list + // instead of using a raw type here, it's possible to capture + // the wildcard but it will require a call to a supplementary + // private method ListIterator it = list.listIterator(); for (int i=0; i list, int i, int j) { + // instead of using a raw type here, it's possible to capture + // the wildcard but it will require a call to a supplementary + // private method final List l = list; l.set(i, l.set(j, l.get(i))); } @@ -657,9 +669,10 @@ public class Collections { * @throws NoSuchElementException if the collection is empty. * @see Comparable */ + @SuppressWarnings({ "unchecked", "rawtypes" }) public static T min(Collection coll, Comparator comp) { if (comp==null) - return (T)min((Collection) (Collection) coll); + return (T)min((Collection) coll); Iterator i = coll.iterator(); T candidate = i.next(); @@ -727,9 +740,10 @@ public class Collections { * @throws NoSuchElementException if the collection is empty. * @see Comparable */ + @SuppressWarnings({ "unchecked", "rawtypes" }) public static T max(Collection coll, Comparator comp) { if (comp==null) - return (T)max((Collection) (Collection) coll); + return (T)max((Collection) coll); Iterator i = coll.iterator(); T candidate = i.next(); @@ -1389,7 +1403,9 @@ public class Collections { extends UnmodifiableSet> { private static final long serialVersionUID = 7854390611657943733L; + @SuppressWarnings({ "unchecked", "rawtypes" }) UnmodifiableEntrySet(Set> s) { + // Need to cast to raw in order to work around a limitation in the type system super((Set)s); } public Iterator> iterator() { @@ -1408,13 +1424,15 @@ public class Collections { }; } + @SuppressWarnings("unchecked") public Object[] toArray() { Object[] a = c.toArray(); for (int i=0; i((Map.Entry)a[i]); + a[i] = new UnmodifiableEntry<>((Map.Entry)a[i]); return a; } + @SuppressWarnings("unchecked") public T[] toArray(T[] a) { // We don't pass a to c.toArray, to avoid window of // vulnerability wherein an unscrupulous multithreaded client @@ -1422,7 +1440,7 @@ public class Collections { Object[] arr = c.toArray(a.length==0 ? a : Arrays.copyOf(a, 0)); for (int i=0; i((Map.Entry)arr[i]); + arr[i] = new UnmodifiableEntry<>((Map.Entry)arr[i]); if (arr.length > a.length) return (T[])arr; @@ -1464,7 +1482,7 @@ public class Collections { if (!(o instanceof Set)) return false; - Set s = (Set) o; + Set s = (Set) o; if (s.size() != c.size()) return false; return containsAll(s); // Invokes safe containsAll() above @@ -1493,7 +1511,7 @@ public class Collections { return true; if (!(o instanceof Map.Entry)) return false; - Map.Entry t = (Map.Entry)o; + Map.Entry t = (Map.Entry)o; return eq(e.getKey(), t.getKey()) && eq(e.getValue(), t.getValue()); } diff --git a/jdk/src/share/classes/java/util/ComparableTimSort.java b/jdk/src/share/classes/java/util/ComparableTimSort.java index 22427a2d353..ae1ab6a1e81 100644 --- a/jdk/src/share/classes/java/util/ComparableTimSort.java +++ b/jdk/src/share/classes/java/util/ComparableTimSort.java @@ -114,7 +114,6 @@ class ComparableTimSort { // Allocate temp storage (which may be increased later if necessary) int len = a.length; - @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) Object[] newArray = new Object[len < 2 * INITIAL_TMP_STORAGE_LENGTH ? len >>> 1 : INITIAL_TMP_STORAGE_LENGTH]; tmp = newArray; @@ -209,14 +208,13 @@ class ComparableTimSort { * @param start the index of the first element in the range that is * not already known to be sorted ({@code lo <= start <= hi}) */ - @SuppressWarnings("fallthrough") + @SuppressWarnings({ "fallthrough", "rawtypes", "unchecked" }) private static void binarySort(Object[] a, int lo, int hi, int start) { assert lo <= start && start <= hi; if (start == lo) start++; for ( ; start < hi; start++) { - @SuppressWarnings("unchecked") - Comparable pivot = (Comparable) a[start]; + Comparable pivot = (Comparable) a[start]; // Set left (and right) to the index where a[start] (pivot) belongs int left = lo; @@ -279,7 +277,7 @@ class ComparableTimSort { * @return the length of the run beginning at the specified position in * the specified array */ - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private static int countRunAndMakeAscending(Object[] a, int lo, int hi) { assert lo < hi; int runHi = lo + 1; @@ -614,7 +612,7 @@ class ComparableTimSort { * (must be aBase + aLen) * @param len2 length of second run to be merged (must be > 0) */ - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private void mergeLo(int base1, int len1, int base2, int len2) { assert len1 > 0 && len2 > 0 && base1 + len1 == base2; @@ -731,7 +729,7 @@ class ComparableTimSort { * (must be aBase + aLen) * @param len2 length of second run to be merged (must be > 0) */ - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private void mergeHi(int base1, int len1, int base2, int len2) { assert len1 > 0 && len2 > 0 && base1 + len1 == base2; @@ -865,7 +863,6 @@ class ComparableTimSort { else newSize = Math.min(newSize, a.length >>> 1); - @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) Object[] newArray = new Object[newSize]; tmp = newArray; } diff --git a/jdk/src/share/classes/java/util/Currency.java b/jdk/src/share/classes/java/util/Currency.java index ad241c8ee27..1fbdad42cb9 100644 --- a/jdk/src/share/classes/java/util/Currency.java +++ b/jdk/src/share/classes/java/util/Currency.java @@ -404,7 +404,7 @@ public final class Currency implements Serializable { public static Set getAvailableCurrencies() { synchronized(Currency.class) { if (available == null) { - available = new HashSet(256); + available = new HashSet<>(256); // Add simple currencies first for (char c1 = 'A'; c1 <= 'Z'; c1 ++) { diff --git a/jdk/src/share/classes/java/util/EnumMap.java b/jdk/src/share/classes/java/util/EnumMap.java index a7c248f6167..90046abcfa6 100644 --- a/jdk/src/share/classes/java/util/EnumMap.java +++ b/jdk/src/share/classes/java/util/EnumMap.java @@ -120,11 +120,12 @@ public class EnumMap, V> extends AbstractMap return (value == null ? NULL : value); } + @SuppressWarnings("unchecked") private V unmaskNull(Object value) { - return (V) (value == NULL ? null : value); + return (V)(value == NULL ? null : value); } - private static final Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; + private static final Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; /** * Creates an empty enum map with the specified key type. @@ -218,12 +219,12 @@ public class EnumMap, V> extends AbstractMap * key */ public boolean containsKey(Object key) { - return isValidKey(key) && vals[((Enum)key).ordinal()] != null; + return isValidKey(key) && vals[((Enum)key).ordinal()] != null; } private boolean containsMapping(Object key, Object value) { return isValidKey(key) && - maskNull(value).equals(vals[((Enum)key).ordinal()]); + maskNull(value).equals(vals[((Enum)key).ordinal()]); } /** @@ -243,7 +244,7 @@ public class EnumMap, V> extends AbstractMap */ public V get(Object key) { return (isValidKey(key) ? - unmaskNull(vals[((Enum)key).ordinal()]) : null); + unmaskNull(vals[((Enum)key).ordinal()]) : null); } // Modification Operations @@ -285,7 +286,7 @@ public class EnumMap, V> extends AbstractMap public V remove(Object key) { if (!isValidKey(key)) return null; - int index = ((Enum)key).ordinal(); + int index = ((Enum)key).ordinal(); Object oldValue = vals[index]; vals[index] = null; if (oldValue != null) @@ -296,7 +297,7 @@ public class EnumMap, V> extends AbstractMap private boolean removeMapping(Object key, Object value) { if (!isValidKey(key)) return false; - int index = ((Enum)key).ordinal(); + int index = ((Enum)key).ordinal(); if (maskNull(value).equals(vals[index])) { vals[index] = null; size--; @@ -314,7 +315,7 @@ public class EnumMap, V> extends AbstractMap return false; // Cheaper than instanceof Enum followed by getDeclaringClass - Class keyClass = key.getClass(); + Class keyClass = key.getClass(); return keyClass == keyType || keyClass.getSuperclass() == keyType; } @@ -331,8 +332,7 @@ public class EnumMap, V> extends AbstractMap */ public void putAll(Map m) { if (m instanceof EnumMap) { - EnumMap em = - (EnumMap)m; + EnumMap em = (EnumMap)m; if (em.keyType != keyType) { if (em.isEmpty()) return; @@ -476,13 +476,13 @@ public class EnumMap, V> extends AbstractMap public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry)o; + Map.Entry entry = (Map.Entry)o; return containsMapping(entry.getKey(), entry.getValue()); } public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry)o; + Map.Entry entry = (Map.Entry)o; return removeMapping(entry.getKey(), entry.getValue()); } public int size() { @@ -610,7 +610,7 @@ public class EnumMap, V> extends AbstractMap if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; V ourValue = unmaskNull(vals[index]); Object hisValue = e.getValue(); return (e.getKey() == keyUniverse[index] && @@ -655,11 +655,11 @@ public class EnumMap, V> extends AbstractMap if (this == o) return true; if (o instanceof EnumMap) - return equals((EnumMap)o); + return equals((EnumMap)o); if (!(o instanceof Map)) return false; - Map m = (Map)o; + Map m = (Map)o; if (size != m.size()) return false; @@ -680,7 +680,7 @@ public class EnumMap, V> extends AbstractMap return true; } - private boolean equals(EnumMap em) { + private boolean equals(EnumMap em) { if (em.keyType != keyType) return size == 0 && em.size == 0; @@ -721,6 +721,7 @@ public class EnumMap, V> extends AbstractMap * * @return a shallow copy of this enum map */ + @SuppressWarnings("unchecked") public EnumMap clone() { EnumMap result = null; try { @@ -736,7 +737,7 @@ public class EnumMap, V> extends AbstractMap * Throws an exception if e is not of the correct type for this enum set. */ private void typeCheck(K key) { - Class keyClass = key.getClass(); + Class keyClass = key.getClass(); if (keyClass != keyType && keyClass.getSuperclass() != keyType) throw new ClassCastException(keyClass + " != " + keyType); } @@ -785,6 +786,7 @@ public class EnumMap, V> extends AbstractMap * Reconstitute the EnumMap instance from a stream (i.e., * deserialize it). */ + @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { diff --git a/jdk/src/share/classes/java/util/EnumSet.java b/jdk/src/share/classes/java/util/EnumSet.java index 2c6a52ab907..dab4bd73e1d 100644 --- a/jdk/src/share/classes/java/util/EnumSet.java +++ b/jdk/src/share/classes/java/util/EnumSet.java @@ -88,11 +88,11 @@ public abstract class EnumSet> extends AbstractSet /** * All of the values comprising T. (Cached for performance.) */ - final Enum[] universe; + final Enum[] universe; - private static Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; + private static Enum[] ZERO_LENGTH_ENUM_ARRAY = new Enum[0]; - EnumSet(ClasselementType, Enum[] universe) { + EnumSet(ClasselementType, Enum[] universe) { this.elementType = elementType; this.universe = universe; } @@ -105,7 +105,7 @@ public abstract class EnumSet> extends AbstractSet * @throws NullPointerException if elementType is null */ public static > EnumSet noneOf(Class elementType) { - Enum[] universe = getUniverse(elementType); + Enum[] universe = getUniverse(elementType); if (universe == null) throw new ClassCastException(elementType + " not an enum"); @@ -358,6 +358,7 @@ public abstract class EnumSet> extends AbstractSet * * @return a copy of this set */ + @SuppressWarnings("unchecked") public EnumSet clone() { try { return (EnumSet) super.clone(); @@ -375,7 +376,7 @@ public abstract class EnumSet> extends AbstractSet * Throws an exception if e is not of the correct type for this enum set. */ final void typeCheck(E e) { - Class eClass = e.getClass(); + Class eClass = e.getClass(); if (eClass != elementType && eClass.getSuperclass() != elementType) throw new ClassCastException(eClass + " != " + elementType); } @@ -413,16 +414,19 @@ public abstract class EnumSet> extends AbstractSet * * @serial */ - private final Enum[] elements; + private final Enum[] elements; SerializationProxy(EnumSet set) { elementType = set.elementType; elements = set.toArray(ZERO_LENGTH_ENUM_ARRAY); } + // instead of cast to E, we should perhaps use elementType.cast() + // to avoid injection of forged stream, but it will slow the implementation + @SuppressWarnings("unchecked") private Object readResolve() { EnumSet result = EnumSet.noneOf(elementType); - for (Enum e : elements) + for (Enum e : elements) result.add((E)e); return result; } diff --git a/jdk/src/share/classes/java/util/HashMap.java b/jdk/src/share/classes/java/util/HashMap.java index 916d6951ec2..efc707fa28c 100644 --- a/jdk/src/share/classes/java/util/HashMap.java +++ b/jdk/src/share/classes/java/util/HashMap.java @@ -146,7 +146,7 @@ public class HashMap /** * The table, resized as necessary. Length MUST Always be a power of two. */ - transient Entry[] table; + transient Entry[] table; /** * The number of key-value mappings contained in this map. @@ -311,16 +311,17 @@ public class HashMap * * @see #put(Object, Object) */ + @SuppressWarnings("unchecked") public V get(Object key) { if (key == null) - return getForNullKey(); + return (V)getForNullKey(); int hash = hash(key.hashCode()); - for (Entry e = table[indexFor(hash, table.length)]; + for (Entry e = table[indexFor(hash, table.length)]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(k))) - return e.value; + return (V)e.value; } return null; } @@ -332,8 +333,8 @@ public class HashMap * operations (get and put), but incorporated with conditionals in * others. */ - private V getForNullKey() { - for (Entry e = table[0]; e != null; e = e.next) { + private Object getForNullKey() { + for (Entry e = table[0]; e != null; e = e.next) { if (e.key == null) return e.value; } @@ -357,15 +358,16 @@ public class HashMap * HashMap. Returns null if the HashMap contains no mapping * for the key. */ + @SuppressWarnings("unchecked") final Entry getEntry(Object key) { int hash = (key == null) ? 0 : hash(key.hashCode()); - for (Entry e = table[indexFor(hash, table.length)]; + for (Entry e = table[indexFor(hash, table.length)]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k)))) - return e; + return (Entry)e; } return null; } @@ -388,7 +390,9 @@ public class HashMap return putForNullKey(value); int hash = hash(key.hashCode()); int i = indexFor(hash, table.length); - for (Entry e = table[i]; e != null; e = e.next) { + @SuppressWarnings("unchecked") + Entry e = (Entry)table[i]; + for(; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { V oldValue = e.value; @@ -407,7 +411,9 @@ public class HashMap * Offloaded version of put for null keys */ private V putForNullKey(V value) { - for (Entry e = table[0]; e != null; e = e.next) { + @SuppressWarnings("unchecked") + Entry e = (Entry)table[0]; + for(; e != null; e = e.next) { if (e.key == null) { V oldValue = e.value; e.value = value; @@ -435,7 +441,8 @@ public class HashMap * clone or deserialize. It will only happen for construction if the * input Map is a sorted map whose ordering is inconsistent w/ equals. */ - for (Entry e = table[i]; e != null; e = e.next) { + for (@SuppressWarnings("unchecked") + Entry e = (Entry)table[i]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k)))) { @@ -467,14 +474,14 @@ public class HashMap * is irrelevant). */ void resize(int newCapacity) { - Entry[] oldTable = table; + Entry[] oldTable = table; int oldCapacity = oldTable.length; if (oldCapacity == MAXIMUM_CAPACITY) { threshold = Integer.MAX_VALUE; return; } - Entry[] newTable = new Entry[newCapacity]; + Entry[] newTable = new Entry[newCapacity]; transfer(newTable); table = newTable; threshold = (int)(newCapacity * loadFactor); @@ -483,17 +490,18 @@ public class HashMap /** * Transfers all entries from current table to newTable. */ - void transfer(Entry[] newTable) { - Entry[] src = table; + @SuppressWarnings("unchecked") + void transfer(Entry[] newTable) { + Entry[] src = table; int newCapacity = newTable.length; for (int j = 0; j < src.length; j++) { - Entry e = src[j]; + Entry e = (Entry)src[j]; if (e != null) { src[j] = null; do { Entry next = e.next; int i = indexFor(e.hash, newCapacity); - e.next = newTable[i]; + e.next = (Entry)newTable[i]; newTable[i] = e; e = next; } while (e != null); @@ -560,7 +568,8 @@ public class HashMap final Entry removeEntryForKey(Object key) { int hash = (key == null) ? 0 : hash(key.hashCode()); int i = indexFor(hash, table.length); - Entry prev = table[i]; + @SuppressWarnings("unchecked") + Entry prev = (Entry)table[i]; Entry e = prev; while (e != null) { @@ -591,11 +600,12 @@ public class HashMap if (!(o instanceof Map.Entry)) return null; - Map.Entry entry = (Map.Entry) o; + Map.Entry entry = (Map.Entry) o; Object key = entry.getKey(); int hash = (key == null) ? 0 : hash(key.hashCode()); int i = indexFor(hash, table.length); - Entry prev = table[i]; + @SuppressWarnings("unchecked") + Entry prev = (Entry)table[i]; Entry e = prev; while (e != null) { @@ -623,7 +633,7 @@ public class HashMap */ public void clear() { modCount++; - Entry[] tab = table; + Entry[] tab = table; for (int i = 0; i < tab.length; i++) tab[i] = null; size = 0; @@ -641,9 +651,9 @@ public class HashMap if (value == null) return containsNullValue(); - Entry[] tab = table; + Entry[] tab = table; for (int i = 0; i < tab.length ; i++) - for (Entry e = tab[i] ; e != null ; e = e.next) + for (Entry e = tab[i] ; e != null ; e = e.next) if (value.equals(e.value)) return true; return false; @@ -653,9 +663,9 @@ public class HashMap * Special-case code for containsValue with null argument */ private boolean containsNullValue() { - Entry[] tab = table; + Entry[] tab = table; for (int i = 0; i < tab.length ; i++) - for (Entry e = tab[i] ; e != null ; e = e.next) + for (Entry e = tab[i] ; e != null ; e = e.next) if (e.value == null) return true; return false; @@ -667,6 +677,7 @@ public class HashMap * * @return a shallow copy of this map */ + @SuppressWarnings("unchecked") public Object clone() { HashMap result = null; try { @@ -674,7 +685,7 @@ public class HashMap } catch (CloneNotSupportedException e) { // assert false; } - result.table = new Entry[table.length]; + result.table = new Entry[table.length]; result.entrySet = null; result.modCount = 0; result.size = 0; @@ -717,7 +728,7 @@ public class HashMap public final boolean equals(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; Object k1 = getKey(); Object k2 = e.getKey(); if (k1 == k2 || (k1 != null && k1.equals(k2))) { @@ -762,7 +773,8 @@ public class HashMap * Subclass overrides this to alter the behavior of put method. */ void addEntry(int hash, K key, V value, int bucketIndex) { - Entry e = table[bucketIndex]; + @SuppressWarnings("unchecked") + Entry e = (Entry)table[bucketIndex]; table[bucketIndex] = new Entry<>(hash, key, value, e); if (size++ >= threshold) resize(2 * table.length); @@ -777,21 +789,22 @@ public class HashMap * clone, and readObject. */ void createEntry(int hash, K key, V value, int bucketIndex) { - Entry e = table[bucketIndex]; + @SuppressWarnings("unchecked") + Entry e = (Entry)table[bucketIndex]; table[bucketIndex] = new Entry<>(hash, key, value, e); size++; } private abstract class HashIterator implements Iterator { - Entry next; // next entry to return + Entry next; // next entry to return int expectedModCount; // For fast-fail int index; // current slot - Entry current; // current entry + Entry current; // current entry HashIterator() { expectedModCount = modCount; if (size > 0) { // advance to first entry - Entry[] t = table; + Entry[] t = table; while (index < t.length && (next = t[index++]) == null) ; } @@ -801,20 +814,21 @@ public class HashMap return next != null; } + @SuppressWarnings("unchecked") final Entry nextEntry() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); - Entry e = next; + Entry e = next; if (e == null) throw new NoSuchElementException(); if ((next = e.next) == null) { - Entry[] t = table; + Entry[] t = table; while (index < t.length && (next = t[index++]) == null) ; } current = e; - return e; + return (Entry)e; } public void remove() { @@ -965,7 +979,7 @@ public class HashMap public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; Entry candidate = getEntry(e.getKey()); return candidate != null && candidate.equals(e); } @@ -1039,8 +1053,10 @@ public class HashMap // Read the keys and values, and put the mappings in the HashMap for (int i=0; i * * @return a shallow copy of this set */ + @SuppressWarnings("unchecked") public Object clone() { try { HashSet newSet = (HashSet) super.clone(); @@ -296,7 +297,7 @@ public class HashSet // Read in HashMap capacity and load factor and create backing HashMap int capacity = s.readInt(); float loadFactor = s.readFloat(); - map = (((HashSet)this) instanceof LinkedHashSet ? + map = (((HashSet)this) instanceof LinkedHashSet ? new LinkedHashMap(capacity, loadFactor) : new HashMap(capacity, loadFactor)); @@ -305,7 +306,8 @@ public class HashSet // Read in all elements in the proper order. for (int i=0; i /** * The hash table data. */ - private transient Entry[] table; + private transient Entry[] table; /** * The total number of entries in the hash table. @@ -182,7 +182,7 @@ public class Hashtable if (initialCapacity==0) initialCapacity = 1; this.loadFactor = loadFactor; - table = new Entry[initialCapacity]; + table = new Entry[initialCapacity]; threshold = (int)(initialCapacity * loadFactor); } @@ -288,9 +288,9 @@ public class Hashtable throw new NullPointerException(); } - Entry tab[] = table; + Entry tab[] = table; for (int i = tab.length ; i-- > 0 ;) { - for (Entry e = tab[i] ; e != null ; e = e.next) { + for (Entry e = tab[i] ; e != null ; e = e.next) { if (e.value.equals(value)) { return true; } @@ -326,10 +326,10 @@ public class Hashtable * @see #contains(Object) */ public synchronized boolean containsKey(Object key) { - Entry tab[] = table; + Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index] ; e != null ; e = e.next) { + for (Entry e = tab[index] ; e != null ; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { return true; } @@ -352,13 +352,14 @@ public class Hashtable * @throws NullPointerException if the specified key is null * @see #put(Object, Object) */ + @SuppressWarnings("unchecked") public synchronized V get(Object key) { - Entry tab[] = table; + Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index] ; e != null ; e = e.next) { + for (Entry e = tab[index] ; e != null ; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { - return e.value; + return (V)e.value; } } return null; @@ -379,9 +380,10 @@ public class Hashtable * number of keys in the hashtable exceeds this hashtable's capacity * and load factor. */ + @SuppressWarnings("unchecked") protected void rehash() { int oldCapacity = table.length; - Entry[] oldMap = table; + Entry[] oldMap = table; // overflow-conscious code int newCapacity = (oldCapacity << 1) + 1; @@ -391,19 +393,19 @@ public class Hashtable return; newCapacity = MAX_ARRAY_SIZE; } - Entry[] newMap = new Entry[newCapacity]; + Entry[] newMap = new Entry[newCapacity]; modCount++; threshold = (int)(newCapacity * loadFactor); table = newMap; for (int i = oldCapacity ; i-- > 0 ;) { - for (Entry old = oldMap[i] ; old != null ; ) { + for (Entry old = (Entry)oldMap[i] ; old != null ; ) { Entry e = old; old = old.next; int index = (e.hash & 0x7FFFFFFF) % newCapacity; - e.next = newMap[index]; + e.next = (Entry)newMap[index]; newMap[index] = e; } } @@ -433,13 +435,15 @@ public class Hashtable } // Makes sure the key is not already in the hashtable. - Entry tab[] = table; + Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index] ; e != null ; e = e.next) { - if ((e.hash == hash) && e.key.equals(key)) { - V old = e.value; - e.value = value; + @SuppressWarnings("unchecked") + Entry entry = (Entry)tab[index]; + for(; entry != null ; entry = entry.next) { + if ((entry.hash == hash) && entry.key.equals(key)) { + V old = entry.value; + entry.value = value; return old; } } @@ -454,7 +458,8 @@ public class Hashtable } // Creates the new entry. - Entry e = tab[index]; + @SuppressWarnings("unchecked") + Entry e = (Entry)tab[index]; tab[index] = new Entry<>(hash, key, value, e); count++; return null; @@ -470,10 +475,12 @@ public class Hashtable * @throws NullPointerException if the key is null */ public synchronized V remove(Object key) { - Entry tab[] = table; + Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index], prev = null ; e != null ; prev = e, e = e.next) { + @SuppressWarnings("unchecked") + Entry e = (Entry)tab[index]; + for(Entry prev = null ; e != null ; prev = e, e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { modCount++; if (prev != null) { @@ -508,7 +515,7 @@ public class Hashtable * Clears this hashtable so that it contains no keys. */ public synchronized void clear() { - Entry tab[] = table; + Entry tab[] = table; modCount++; for (int index = tab.length; --index >= 0; ) tab[index] = null; @@ -524,11 +531,11 @@ public class Hashtable */ public synchronized Object clone() { try { - Hashtable t = (Hashtable) super.clone(); - t.table = new Entry[table.length]; + Hashtable t = (Hashtable)super.clone(); + t.table = new Entry[table.length]; for (int i = table.length ; i-- > 0 ; ) { t.table[i] = (table[i] != null) - ? (Entry) table[i].clone() : null; + ? (Entry) table[i].clone() : null; } t.keySet = null; t.entrySet = null; @@ -675,13 +682,13 @@ public class Hashtable public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry)o; + Map.Entry entry = (Map.Entry)o; Object key = entry.getKey(); - Entry[] tab = table; + Entry[] tab = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index]; e != null; e = e.next) + for (Entry e = tab[index]; e != null; e = e.next) if (e.hash==hash && e.equals(entry)) return true; return false; @@ -690,14 +697,15 @@ public class Hashtable public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry) o; - K key = entry.getKey(); - Entry[] tab = table; + Map.Entry entry = (Map.Entry) o; + Object key = entry.getKey(); + Entry[] tab = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index], prev = null; e != null; - prev = e, e = e.next) { + @SuppressWarnings("unchecked") + Entry e = (Entry)tab[index]; + for(Entry prev = null; e != null; prev = e, e = e.next) { if (e.hash==hash && e.equals(entry)) { modCount++; if (prev != null) @@ -776,7 +784,7 @@ public class Hashtable if (!(o instanceof Map)) return false; - Map t = (Map) o; + Map t = (Map) o; if (t.size() != size()) return false; @@ -826,9 +834,9 @@ public class Hashtable return h; // Returns zero loadFactor = -loadFactor; // Mark hashCode computation in progress - Entry[] tab = table; + Entry[] tab = table; for (int i = 0; i < tab.length; i++) - for (Entry e = tab[i]; e != null; e = e.next) + for (Entry e = tab[i]; e != null; e = e.next) h += e.key.hashCode() ^ e.value.hashCode(); loadFactor = -loadFactor; // Mark hashCode computation complete @@ -859,7 +867,7 @@ public class Hashtable // Stack copies of the entries in the table for (int index = 0; index < table.length; index++) { - Entry entry = table[index]; + Entry entry = table[index]; while (entry != null) { entryStack = @@ -899,14 +907,15 @@ public class Hashtable length--; if (origlength > 0 && length > origlength) length = origlength; - - Entry[] table = new Entry[length]; + Entry[] table = new Entry[length]; count = 0; // Read the number of elements and then all the key/value objects for (; elements > 0; elements--) { - K key = (K)s.readObject(); - V value = (V)s.readObject(); + @SuppressWarnings("unchecked") + K key = (K)s.readObject(); + @SuppressWarnings("unchecked") + V value = (V)s.readObject(); // synch could be eliminated for performance reconstitutionPut(table, key, value); } @@ -924,7 +933,7 @@ public class Hashtable * because we are creating a new instance. Also, no return value * is needed. */ - private void reconstitutionPut(Entry[] tab, K key, V value) + private void reconstitutionPut(Entry[] tab, K key, V value) throws StreamCorruptedException { if (value == null) { @@ -934,13 +943,14 @@ public class Hashtable // This should not happen in deserialized version. int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index] ; e != null ; e = e.next) { + for (Entry e = tab[index] ; e != null ; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { throw new java.io.StreamCorruptedException(); } } // Creates the new entry. - Entry e = tab[index]; + @SuppressWarnings("unchecked") + Entry e = (Entry)tab[index]; tab[index] = new Entry<>(hash, key, value, e); count++; } @@ -961,6 +971,7 @@ public class Hashtable this.next = next; } + @SuppressWarnings("unchecked") protected Object clone() { return new Entry<>(hash, key, value, (next==null ? null : (Entry) next.clone())); @@ -988,7 +999,7 @@ public class Hashtable public boolean equals(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; return (key==null ? e.getKey()==null : key.equals(e.getKey())) && (value==null ? e.getValue()==null : value.equals(e.getValue())); @@ -1016,10 +1027,10 @@ public class Hashtable * by passing an Enumeration. */ private class Enumerator implements Enumeration, Iterator { - Entry[] table = Hashtable.this.table; + Entry[] table = Hashtable.this.table; int index = table.length; - Entry entry = null; - Entry lastReturned = null; + Entry entry = null; + Entry lastReturned = null; int type; /** @@ -1041,9 +1052,9 @@ public class Hashtable } public boolean hasMoreElements() { - Entry e = entry; + Entry e = entry; int i = index; - Entry[] t = table; + Entry[] t = table; /* Use locals for faster loop iteration */ while (e == null && i > 0) { e = t[--i]; @@ -1053,10 +1064,11 @@ public class Hashtable return e != null; } + @SuppressWarnings("unchecked") public T nextElement() { - Entry et = entry; + Entry et = entry; int i = index; - Entry[] t = table; + Entry[] t = table; /* Use locals for faster loop iteration */ while (et == null && i > 0) { et = t[--i]; @@ -1064,7 +1076,7 @@ public class Hashtable entry = et; index = i; if (et != null) { - Entry e = lastReturned = entry; + Entry e = lastReturned = entry; entry = e.next; return type == KEYS ? (T)e.key : (type == VALUES ? (T)e.value : (T)e); } @@ -1091,11 +1103,12 @@ public class Hashtable throw new ConcurrentModificationException(); synchronized(Hashtable.this) { - Entry[] tab = Hashtable.this.table; + Entry[] tab = Hashtable.this.table; int index = (lastReturned.hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index], prev = null; e != null; - prev = e, e = e.next) { + @SuppressWarnings("unchecked") + Entry e = (Entry)tab[index]; + for(Entry prev = null; e != null; prev = e, e = e.next) { if (e == lastReturned) { modCount++; expectedModCount++; diff --git a/jdk/src/share/classes/java/util/IdentityHashMap.java b/jdk/src/share/classes/java/util/IdentityHashMap.java index 930c3ac108d..6355557df6d 100644 --- a/jdk/src/share/classes/java/util/IdentityHashMap.java +++ b/jdk/src/share/classes/java/util/IdentityHashMap.java @@ -327,6 +327,7 @@ public class IdentityHashMap * * @see #put(Object, Object) */ + @SuppressWarnings("unchecked") public V get(Object key) { Object k = maskNull(key); Object[] tab = table; @@ -431,7 +432,8 @@ public class IdentityHashMap Object item; while ( (item = tab[i]) != null) { if (item == k) { - V oldValue = (V) tab[i + 1]; + @SuppressWarnings("unchecked") + V oldValue = (V) tab[i + 1]; tab[i + 1] = value; return oldValue; } @@ -524,7 +526,8 @@ public class IdentityHashMap if (item == k) { modCount++; size--; - V oldValue = (V) tab[i + 1]; + @SuppressWarnings("unchecked") + V oldValue = (V) tab[i + 1]; tab[i + 1] = null; tab[i] = null; closeDeletion(i); @@ -638,7 +641,7 @@ public class IdentityHashMap if (o == this) { return true; } else if (o instanceof IdentityHashMap) { - IdentityHashMap m = (IdentityHashMap) o; + IdentityHashMap m = (IdentityHashMap) o; if (m.size() != size) return false; @@ -650,7 +653,7 @@ public class IdentityHashMap } return true; } else if (o instanceof Map) { - Map m = (Map)o; + Map m = (Map)o; return entrySet().equals(m.entrySet()); } else { return false; // o is not a Map @@ -698,7 +701,7 @@ public class IdentityHashMap */ public Object clone() { try { - IdentityHashMap m = (IdentityHashMap) super.clone(); + IdentityHashMap m = (IdentityHashMap) super.clone(); m.entrySet = null; m.table = table.clone(); return m; @@ -768,7 +771,7 @@ public class IdentityHashMap int len = tab.length; int d = deletedSlot; - K key = (K) tab[d]; + Object key = tab[d]; tab[d] = null; // vacate the slot tab[d + 1] = null; @@ -818,12 +821,14 @@ public class IdentityHashMap } private class KeyIterator extends IdentityHashMapIterator { + @SuppressWarnings("unchecked") public K next() { return (K) unmaskNull(traversalTable[nextIndex()]); } } private class ValueIterator extends IdentityHashMapIterator { + @SuppressWarnings("unchecked") public V next() { return (V) traversalTable[nextIndex() + 1]; } @@ -854,16 +859,19 @@ public class IdentityHashMap this.index = index; } + @SuppressWarnings("unchecked") public K getKey() { checkIndexForEntryUse(); return (K) unmaskNull(traversalTable[index]); } + @SuppressWarnings("unchecked") public V getValue() { checkIndexForEntryUse(); return (V) traversalTable[index+1]; } + @SuppressWarnings("unchecked") public V setValue(V value) { checkIndexForEntryUse(); V oldValue = (V) traversalTable[index+1]; @@ -880,7 +888,7 @@ public class IdentityHashMap if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; return (e.getKey() == unmaskNull(traversalTable[index]) && e.getValue() == traversalTable[index+1]); } @@ -1109,13 +1117,13 @@ public class IdentityHashMap public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry)o; + Map.Entry entry = (Map.Entry)o; return containsMapping(entry.getKey(), entry.getValue()); } public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry)o; + Map.Entry entry = (Map.Entry)o; return removeMapping(entry.getKey(), entry.getValue()); } public int size() { @@ -1213,8 +1221,10 @@ public class IdentityHashMap // Read the keys and values, and put the mappings in the table for (int i=0; i private void putForCreate(K key, V value) throws IOException { - K k = (K)maskNull(key); + Object k = maskNull(key); Object[] tab = table; int len = tab.length; int i = hash(k, len); diff --git a/jdk/src/share/classes/java/util/IllegalFormatConversionException.java b/jdk/src/share/classes/java/util/IllegalFormatConversionException.java index 9bdbfc41dae..2b30922c047 100644 --- a/jdk/src/share/classes/java/util/IllegalFormatConversionException.java +++ b/jdk/src/share/classes/java/util/IllegalFormatConversionException.java @@ -40,7 +40,7 @@ public class IllegalFormatConversionException extends IllegalFormatException { private static final long serialVersionUID = 17000126L; private char c; - private Class arg; + private Class arg; /** * Constructs an instance of this class with the mismatched conversion and diff --git a/jdk/src/share/classes/java/util/JumboEnumSet.java b/jdk/src/share/classes/java/util/JumboEnumSet.java index 93802107bd4..5db15bbdace 100644 --- a/jdk/src/share/classes/java/util/JumboEnumSet.java +++ b/jdk/src/share/classes/java/util/JumboEnumSet.java @@ -46,7 +46,7 @@ class JumboEnumSet> extends EnumSet { // Redundant - maintained for performance private int size = 0; - JumboEnumSet(ClasselementType, Enum[] universe) { + JumboEnumSet(ClasselementType, Enum[] universe) { super(elementType, universe); elements = new long[(universe.length + 63) >>> 6]; } @@ -127,6 +127,7 @@ class JumboEnumSet> extends EnumSet { return unseen != 0; } + @Override public E next() { if (!hasNext()) throw new NoSuchElementException(); @@ -176,11 +177,11 @@ class JumboEnumSet> extends EnumSet { public boolean contains(Object e) { if (e == null) return false; - Class eClass = e.getClass(); + Class eClass = e.getClass(); if (eClass != elementType && eClass.getSuperclass() != elementType) return false; - int eOrdinal = ((Enum)e).ordinal(); + int eOrdinal = ((Enum)e).ordinal(); return (elements[eOrdinal >>> 6] & (1L << eOrdinal)) != 0; } @@ -217,10 +218,10 @@ class JumboEnumSet> extends EnumSet { public boolean remove(Object e) { if (e == null) return false; - Class eClass = e.getClass(); + Class eClass = e.getClass(); if (eClass != elementType && eClass.getSuperclass() != elementType) return false; - int eOrdinal = ((Enum)e).ordinal(); + int eOrdinal = ((Enum)e).ordinal(); int eWordNum = eOrdinal >>> 6; long oldElements = elements[eWordNum]; @@ -246,7 +247,7 @@ class JumboEnumSet> extends EnumSet { if (!(c instanceof JumboEnumSet)) return super.containsAll(c); - JumboEnumSet es = (JumboEnumSet)c; + JumboEnumSet es = (JumboEnumSet)c; if (es.elementType != elementType) return es.isEmpty(); @@ -268,7 +269,7 @@ class JumboEnumSet> extends EnumSet { if (!(c instanceof JumboEnumSet)) return super.addAll(c); - JumboEnumSet es = (JumboEnumSet)c; + JumboEnumSet es = (JumboEnumSet)c; if (es.elementType != elementType) { if (es.isEmpty()) return false; @@ -294,7 +295,7 @@ class JumboEnumSet> extends EnumSet { if (!(c instanceof JumboEnumSet)) return super.removeAll(c); - JumboEnumSet es = (JumboEnumSet)c; + JumboEnumSet es = (JumboEnumSet)c; if (es.elementType != elementType) return false; @@ -348,7 +349,7 @@ class JumboEnumSet> extends EnumSet { if (!(o instanceof JumboEnumSet)) return super.equals(o); - JumboEnumSet es = (JumboEnumSet)o; + JumboEnumSet es = (JumboEnumSet)o; if (es.elementType != elementType) return size == 0 && es.size == 0; diff --git a/jdk/src/share/classes/java/util/LinkedHashMap.java b/jdk/src/share/classes/java/util/LinkedHashMap.java index 4f80ec4f273..5e656c8d78e 100644 --- a/jdk/src/share/classes/java/util/LinkedHashMap.java +++ b/jdk/src/share/classes/java/util/LinkedHashMap.java @@ -246,11 +246,12 @@ public class LinkedHashMap * by superclass resize. It is overridden for performance, as it is * faster to iterate using our linked list. */ + @SuppressWarnings("unchecked") void transfer(HashMap.Entry[] newTable) { int newCapacity = newTable.length; for (Entry e = header.after; e != header; e = e.after) { int index = indexFor(e.hash, newCapacity); - e.next = newTable[index]; + e.next = (HashMap.Entry)newTable[index]; newTable[index] = e; } } @@ -267,11 +268,11 @@ public class LinkedHashMap public boolean containsValue(Object value) { // Overridden to take advantage of faster iterator if (value==null) { - for (Entry e = header.after; e != header; e = e.after) + for (Entry e = header.after; e != header; e = e.after) if (e.value==null) return true; } else { - for (Entry e = header.after; e != header; e = e.after) + for (Entry e = header.after; e != header; e = e.after) if (value.equals(e.value)) return true; } @@ -437,7 +438,8 @@ public class LinkedHashMap * table or remove the eldest entry. */ void createEntry(int hash, K key, V value, int bucketIndex) { - HashMap.Entry old = table[bucketIndex]; + @SuppressWarnings("unchecked") + HashMap.Entry old = (HashMap.Entry)table[bucketIndex]; Entry e = new Entry<>(hash, key, value, old); table[bucketIndex] = e; e.addBefore(header); diff --git a/jdk/src/share/classes/java/util/Observable.java b/jdk/src/share/classes/java/util/Observable.java index 7104071ff62..25295e8444f 100644 --- a/jdk/src/share/classes/java/util/Observable.java +++ b/jdk/src/share/classes/java/util/Observable.java @@ -61,12 +61,12 @@ package java.util; */ public class Observable { private boolean changed = false; - private Vector obs; + private Vector obs; /** Construct an Observable with zero Observers. */ public Observable() { - obs = new Vector(); + obs = new Vector<>(); } /** diff --git a/jdk/src/share/classes/java/util/PriorityQueue.java b/jdk/src/share/classes/java/util/PriorityQueue.java index b4416ab2d4b..bb9c114dd68 100644 --- a/jdk/src/share/classes/java/util/PriorityQueue.java +++ b/jdk/src/share/classes/java/util/PriorityQueue.java @@ -449,6 +449,7 @@ public class PriorityQueue extends AbstractQueue * this queue * @throws NullPointerException if the specified array is null */ + @SuppressWarnings("unchecked") public T[] toArray(T[] a) { if (a.length < size) // Make a new array of a's runtime type, but my contents: @@ -514,6 +515,7 @@ public class PriorityQueue extends AbstractQueue (forgetMeNot != null && !forgetMeNot.isEmpty()); } + @SuppressWarnings("unchecked") public E next() { if (expectedModCount != modCount) throw new ConcurrentModificationException(); @@ -571,8 +573,10 @@ public class PriorityQueue extends AbstractQueue return null; int s = --size; modCount++; - E result = (E) queue[0]; - E x = (E) queue[s]; + @SuppressWarnings("unchecked") + E result = (E) queue[0]; + @SuppressWarnings("unchecked") + E x = (E) queue[s]; queue[s] = null; if (s != 0) siftDown(0, x); @@ -598,7 +602,8 @@ public class PriorityQueue extends AbstractQueue if (s == i) // removed last element queue[i] = null; else { - E moved = (E) queue[s]; + @SuppressWarnings("unchecked") + E moved = (E) queue[s]; queue[s] = null; siftDown(i, moved); if (queue[i] == moved) { @@ -629,6 +634,7 @@ public class PriorityQueue extends AbstractQueue siftUpComparable(k, x); } + @SuppressWarnings("unchecked") private void siftUpComparable(int k, E x) { Comparable key = (Comparable) x; while (k > 0) { @@ -645,8 +651,9 @@ public class PriorityQueue extends AbstractQueue private void siftUpUsingComparator(int k, E x) { while (k > 0) { int parent = (k - 1) >>> 1; - Object e = queue[parent]; - if (comparator.compare(x, (E) e) >= 0) + @SuppressWarnings("unchecked") + E e = (E) queue[parent]; + if (comparator.compare(x, e) >= 0) break; queue[k] = e; k = parent; @@ -669,6 +676,7 @@ public class PriorityQueue extends AbstractQueue siftDownComparable(k, x); } + @SuppressWarnings("unchecked") private void siftDownComparable(int k, E x) { Comparable key = (Comparable)x; int half = size >>> 1; // loop while a non-leaf @@ -687,6 +695,7 @@ public class PriorityQueue extends AbstractQueue queue[k] = key; } + @SuppressWarnings("unchecked") private void siftDownUsingComparator(int k, E x) { int half = size >>> 1; while (k < half) { @@ -708,6 +717,7 @@ public class PriorityQueue extends AbstractQueue * Establishes the heap invariant (described above) in the entire tree, * assuming nothing about the order of the elements prior to the call. */ + @SuppressWarnings("unchecked") private void heapify() { for (int i = (size >>> 1) - 1; i >= 0; i--) siftDown(i, (E) queue[i]); diff --git a/jdk/src/share/classes/java/util/Properties.java b/jdk/src/share/classes/java/util/Properties.java index 7c7e13b6a9d..c2fdad48cda 100644 --- a/jdk/src/share/classes/java/util/Properties.java +++ b/jdk/src/share/classes/java/util/Properties.java @@ -824,7 +824,7 @@ class Properties extends Hashtable { bw.write("#" + new Date().toString()); bw.newLine(); synchronized (this) { - for (Enumeration e = keys(); e.hasMoreElements();) { + for (Enumeration e = keys(); e.hasMoreElements();) { String key = (String)e.nextElement(); String val = (String)get(key); key = saveConvert(key, true, escUnicode); @@ -987,7 +987,7 @@ class Properties extends Hashtable { * @see #stringPropertyNames */ public Enumeration propertyNames() { - Hashtable h = new Hashtable(); + Hashtable h = new Hashtable<>(); enumerate(h); return h.keys(); } @@ -1026,10 +1026,10 @@ class Properties extends Hashtable { */ public void list(PrintStream out) { out.println("-- listing properties --"); - Hashtable h = new Hashtable(); + Hashtable h = new Hashtable<>(); enumerate(h); - for (Enumeration e = h.keys() ; e.hasMoreElements() ;) { - String key = (String)e.nextElement(); + for (Enumeration e = h.keys() ; e.hasMoreElements() ;) { + String key = e.nextElement(); String val = (String)h.get(key); if (val.length() > 40) { val = val.substring(0, 37) + "..."; @@ -1054,10 +1054,10 @@ class Properties extends Hashtable { */ public void list(PrintWriter out) { out.println("-- listing properties --"); - Hashtable h = new Hashtable(); + Hashtable h = new Hashtable<>(); enumerate(h); - for (Enumeration e = h.keys() ; e.hasMoreElements() ;) { - String key = (String)e.nextElement(); + for (Enumeration e = h.keys() ; e.hasMoreElements() ;) { + String key = e.nextElement(); String val = (String)h.get(key); if (val.length() > 40) { val = val.substring(0, 37) + "..."; @@ -1072,11 +1072,11 @@ class Properties extends Hashtable { * @throws ClassCastException if any of the property keys * is not of String type. */ - private synchronized void enumerate(Hashtable h) { + private synchronized void enumerate(Hashtable h) { if (defaults != null) { defaults.enumerate(h); } - for (Enumeration e = keys() ; e.hasMoreElements() ;) { + for (Enumeration e = keys() ; e.hasMoreElements() ;) { String key = (String)e.nextElement(); h.put(key, get(key)); } @@ -1091,7 +1091,7 @@ class Properties extends Hashtable { if (defaults != null) { defaults.enumerateStringProperties(h); } - for (Enumeration e = keys() ; e.hasMoreElements() ;) { + for (Enumeration e = keys() ; e.hasMoreElements() ;) { Object k = e.nextElement(); Object v = get(k); if (k instanceof String && v instanceof String) { diff --git a/jdk/src/share/classes/java/util/PropertyPermission.java b/jdk/src/share/classes/java/util/PropertyPermission.java index 17731883598..c89b28bf4d2 100644 --- a/jdk/src/share/classes/java/util/PropertyPermission.java +++ b/jdk/src/share/classes/java/util/PropertyPermission.java @@ -442,7 +442,7 @@ implements Serializable * Key is property name; value is PropertyPermission. * Not serialized; see serialization section at end of class. */ - private transient Map perms; + private transient Map perms; /** * Boolean saying if "*" is in the collection. @@ -488,7 +488,7 @@ implements Serializable String propName = pp.getName(); synchronized (this) { - PropertyPermission existing = (PropertyPermission) perms.get(propName); + PropertyPermission existing = perms.get(propName); if (existing != null) { int oldMask = existing.getMask(); @@ -499,7 +499,7 @@ implements Serializable perms.put(propName, new PropertyPermission(propName, actions)); } } else { - perms.put(propName, permission); + perms.put(propName, pp); } } @@ -533,7 +533,7 @@ implements Serializable // short circuit if the "*" Permission was added if (all_allowed) { synchronized (this) { - x = (PropertyPermission) perms.get("*"); + x = perms.get("*"); } if (x != null) { effective |= x.getMask(); @@ -550,7 +550,7 @@ implements Serializable //System.out.println("check "+name); synchronized (this) { - x = (PropertyPermission) perms.get(name); + x = perms.get(name); } if (x != null) { @@ -570,7 +570,7 @@ implements Serializable name = name.substring(0, last+1) + "*"; //System.out.println("check "+name); synchronized (this) { - x = (PropertyPermission) perms.get(name); + x = perms.get(name); } if (x != null) { @@ -592,11 +592,15 @@ implements Serializable * * @return an enumeration of all the PropertyPermission objects. */ - + @SuppressWarnings("unchecked") public Enumeration elements() { // Convert Iterator of Map values into an Enumeration synchronized (this) { - return Collections.enumeration(perms.values()); + /** + * Casting to rawtype since Enumeration + * cannot be directly cast to Enumeration + */ + return (Enumeration)Collections.enumeration(perms.values()); } } @@ -633,7 +637,8 @@ implements Serializable // Don't call out.defaultWriteObject() // Copy perms into a Hashtable - Hashtable permissions = new Hashtable<>(perms.size()*2); + Hashtable permissions = + new Hashtable<>(perms.size()*2); synchronized (this) { permissions.putAll(perms); } @@ -661,8 +666,8 @@ implements Serializable // Get permissions @SuppressWarnings("unchecked") - Hashtable permissions = - (Hashtable)gfields.get("permissions", null); + Hashtable permissions = + (Hashtable)gfields.get("permissions", null); perms = new HashMap<>(permissions.size()*2); perms.putAll(permissions); } diff --git a/jdk/src/share/classes/java/util/RegularEnumSet.java b/jdk/src/share/classes/java/util/RegularEnumSet.java index 4bcb5780b00..63f5f52e664 100644 --- a/jdk/src/share/classes/java/util/RegularEnumSet.java +++ b/jdk/src/share/classes/java/util/RegularEnumSet.java @@ -41,7 +41,7 @@ class RegularEnumSet> extends EnumSet { */ private long elements = 0L; - RegularEnumSet(ClasselementType, Enum[] universe) { + RegularEnumSet(ClasselementType, Enum[] universe) { super(elementType, universe); } @@ -96,6 +96,7 @@ class RegularEnumSet> extends EnumSet { return unseen != 0; } + @SuppressWarnings("unchecked") public E next() { if (unseen == 0) throw new NoSuchElementException(); @@ -139,11 +140,11 @@ class RegularEnumSet> extends EnumSet { public boolean contains(Object e) { if (e == null) return false; - Class eClass = e.getClass(); + Class eClass = e.getClass(); if (eClass != elementType && eClass.getSuperclass() != elementType) return false; - return (elements & (1L << ((Enum)e).ordinal())) != 0; + return (elements & (1L << ((Enum)e).ordinal())) != 0; } // Modification Operations @@ -160,7 +161,7 @@ class RegularEnumSet> extends EnumSet { typeCheck(e); long oldElements = elements; - elements |= (1L << ((Enum)e).ordinal()); + elements |= (1L << ((Enum)e).ordinal()); return elements != oldElements; } @@ -173,12 +174,12 @@ class RegularEnumSet> extends EnumSet { public boolean remove(Object e) { if (e == null) return false; - Class eClass = e.getClass(); + Class eClass = e.getClass(); if (eClass != elementType && eClass.getSuperclass() != elementType) return false; long oldElements = elements; - elements &= ~(1L << ((Enum)e).ordinal()); + elements &= ~(1L << ((Enum)e).ordinal()); return elements != oldElements; } @@ -197,7 +198,7 @@ class RegularEnumSet> extends EnumSet { if (!(c instanceof RegularEnumSet)) return super.containsAll(c); - RegularEnumSet es = (RegularEnumSet)c; + RegularEnumSet es = (RegularEnumSet)c; if (es.elementType != elementType) return es.isEmpty(); @@ -216,7 +217,7 @@ class RegularEnumSet> extends EnumSet { if (!(c instanceof RegularEnumSet)) return super.addAll(c); - RegularEnumSet es = (RegularEnumSet)c; + RegularEnumSet es = (RegularEnumSet)c; if (es.elementType != elementType) { if (es.isEmpty()) return false; @@ -242,7 +243,7 @@ class RegularEnumSet> extends EnumSet { if (!(c instanceof RegularEnumSet)) return super.removeAll(c); - RegularEnumSet es = (RegularEnumSet)c; + RegularEnumSet es = (RegularEnumSet)c; if (es.elementType != elementType) return false; @@ -295,7 +296,7 @@ class RegularEnumSet> extends EnumSet { if (!(o instanceof RegularEnumSet)) return super.equals(o); - RegularEnumSet es = (RegularEnumSet)o; + RegularEnumSet es = (RegularEnumSet)o; if (es.elementType != elementType) return elements == 0 && es.elements == 0; return es.elements == elements; diff --git a/jdk/src/share/classes/java/util/ResourceBundle.java b/jdk/src/share/classes/java/util/ResourceBundle.java index c7b425db7ac..6be14d590fa 100644 --- a/jdk/src/share/classes/java/util/ResourceBundle.java +++ b/jdk/src/share/classes/java/util/ResourceBundle.java @@ -294,7 +294,8 @@ public abstract class ResourceBundle { /** * Queue for reference objects referring to class loaders or bundles. */ - private static final ReferenceQueue referenceQueue = new ReferenceQueue<>(); + private static final ReferenceQueue referenceQueue = + new ReferenceQueue<>(); /** * The parent bundle of this bundle. @@ -417,7 +418,7 @@ public abstract class ResourceBundle { * caller's caller. */ private static ClassLoader getLoader() { - Class[] stack = getClassContext(); + Class[] stack = getClassContext(); /* Magic number 2 identifies our caller's caller */ Class c = stack[2]; ClassLoader cl = (c == null) ? null : c.getClassLoader(); @@ -434,7 +435,7 @@ public abstract class ResourceBundle { return cl; } - private static native Class[] getClassContext(); + private static native Class[] getClassContext(); /** * A wrapper of ClassLoader.getSystemClassLoader(). diff --git a/jdk/src/share/classes/java/util/ServiceLoader.java b/jdk/src/share/classes/java/util/ServiceLoader.java index b3c34ae24cf..62aa9dd2453 100644 --- a/jdk/src/share/classes/java/util/ServiceLoader.java +++ b/jdk/src/share/classes/java/util/ServiceLoader.java @@ -218,20 +218,20 @@ public final class ServiceLoader reload(); } - private static void fail(Class service, String msg, Throwable cause) + private static void fail(Class service, String msg, Throwable cause) throws ServiceConfigurationError { throw new ServiceConfigurationError(service.getName() + ": " + msg, cause); } - private static void fail(Class service, String msg) + private static void fail(Class service, String msg) throws ServiceConfigurationError { throw new ServiceConfigurationError(service.getName() + ": " + msg); } - private static void fail(Class service, URL u, int line, String msg) + private static void fail(Class service, URL u, int line, String msg) throws ServiceConfigurationError { fail(service, u + ":" + line + ": " + msg); @@ -240,7 +240,7 @@ public final class ServiceLoader // Parse a single line from the given configuration file, adding the name // on the line to the names list. // - private int parseLine(Class service, URL u, BufferedReader r, int lc, + private int parseLine(Class service, URL u, BufferedReader r, int lc, List names) throws IOException, ServiceConfigurationError { @@ -286,7 +286,7 @@ public final class ServiceLoader // If an I/O error occurs while reading from the given URL, or // if a configuration-file format error is detected // - private Iterator parse(Class service, URL u) + private Iterator parse(Class service, URL u) throws ServiceConfigurationError { InputStream in = null; diff --git a/jdk/src/share/classes/java/util/TimeZone.java b/jdk/src/share/classes/java/util/TimeZone.java index e9d6cef056b..647e350e4b3 100644 --- a/jdk/src/share/classes/java/util/TimeZone.java +++ b/jdk/src/share/classes/java/util/TimeZone.java @@ -428,7 +428,7 @@ abstract public class TimeZone implements Serializable, Cloneable { // The structure is: // Map(key=id, value=SoftReference(Map(key=locale, value=displaynames))) private static final Map>> CACHE = - new ConcurrentHashMap>>(); + new ConcurrentHashMap<>(); } private static final String[] getDisplayNames(String id, Locale locale) { @@ -452,9 +452,9 @@ abstract public class TimeZone implements Serializable, Cloneable { String[] names = TimeZoneNameUtility.retrieveDisplayNames(id, locale); if (names != null) { - Map perLocale = new ConcurrentHashMap(); + Map perLocale = new ConcurrentHashMap<>(); perLocale.put(locale, names); - ref = new SoftReference>(perLocale); + ref = new SoftReference<>(perLocale); displayNames.put(id, ref); } return names; diff --git a/jdk/src/share/classes/java/util/TreeMap.java b/jdk/src/share/classes/java/util/TreeMap.java index c7aae652466..dfa1509774e 100644 --- a/jdk/src/share/classes/java/util/TreeMap.java +++ b/jdk/src/share/classes/java/util/TreeMap.java @@ -307,7 +307,7 @@ public class TreeMap public void putAll(Map map) { int mapSize = map.size(); if (size==0 && mapSize!=0 && map instanceof SortedMap) { - Comparator c = ((SortedMap)map).comparator(); + Comparator c = ((SortedMap)map).comparator(); if (c == comparator || (c != null && c.equals(comparator))) { ++modCount; try { @@ -340,7 +340,8 @@ public class TreeMap return getEntryUsingComparator(key); if (key == null) throw new NullPointerException(); - Comparable k = (Comparable) key; + @SuppressWarnings("unchecked") + Comparable k = (Comparable) key; Entry p = root; while (p != null) { int cmp = k.compareTo(p.key); @@ -361,7 +362,8 @@ public class TreeMap * worthwhile here.) */ final Entry getEntryUsingComparator(Object key) { - K k = (K) key; + @SuppressWarnings("unchecked") + K k = (K) key; Comparator cpr = comparator; if (cpr != null) { Entry p = root; @@ -554,7 +556,8 @@ public class TreeMap else { if (key == null) throw new NullPointerException(); - Comparable k = (Comparable) key; + @SuppressWarnings("unchecked") + Comparable k = (Comparable) key; do { parent = t; cmp = k.compareTo(t.key); @@ -618,9 +621,9 @@ public class TreeMap * @return a shallow copy of this map */ public Object clone() { - TreeMap clone = null; + TreeMap clone; try { - clone = (TreeMap) super.clone(); + clone = (TreeMap) super.clone(); } catch (CloneNotSupportedException e) { throw new InternalError(e); } @@ -803,7 +806,7 @@ public class TreeMap */ public NavigableSet navigableKeySet() { KeySet nks = navigableKeySet; - return (nks != null) ? nks : (navigableKeySet = new KeySet(this)); + return (nks != null) ? nks : (navigableKeySet = new KeySet<>(this)); } /** @@ -859,9 +862,9 @@ public class TreeMap public NavigableMap descendingMap() { NavigableMap km = descendingMap; return (km != null) ? km : - (descendingMap = new DescendingSubMap(this, - true, null, true, - true, null, true)); + (descendingMap = new DescendingSubMap<>(this, + true, null, true, + true, null, true)); } /** @@ -874,9 +877,9 @@ public class TreeMap */ public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { - return new AscendingSubMap(this, - false, fromKey, fromInclusive, - false, toKey, toInclusive); + return new AscendingSubMap<>(this, + false, fromKey, fromInclusive, + false, toKey, toInclusive); } /** @@ -888,9 +891,9 @@ public class TreeMap * @since 1.6 */ public NavigableMap headMap(K toKey, boolean inclusive) { - return new AscendingSubMap(this, - true, null, true, - false, toKey, inclusive); + return new AscendingSubMap<>(this, + true, null, true, + false, toKey, inclusive); } /** @@ -902,9 +905,9 @@ public class TreeMap * @since 1.6 */ public NavigableMap tailMap(K fromKey, boolean inclusive) { - return new AscendingSubMap(this, - false, fromKey, inclusive, - true, null, true); + return new AscendingSubMap<>(this, + false, fromKey, inclusive, + true, null, true); } /** @@ -978,8 +981,8 @@ public class TreeMap public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry) o; - V value = entry.getValue(); + Map.Entry entry = (Map.Entry) o; + Object value = entry.getValue(); Entry p = getEntry(entry.getKey()); return p != null && valEquals(p.getValue(), value); } @@ -987,8 +990,8 @@ public class TreeMap public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry) o; - V value = entry.getValue(); + Map.Entry entry = (Map.Entry) o; + Object value = entry.getValue(); Entry p = getEntry(entry.getKey()); if (p != null && valEquals(p.getValue(), value)) { deleteEntry(p); @@ -1023,21 +1026,21 @@ public class TreeMap } static final class KeySet extends AbstractSet implements NavigableSet { - private final NavigableMap m; - KeySet(NavigableMap map) { m = map; } + private final NavigableMap m; + KeySet(NavigableMap map) { m = map; } public Iterator iterator() { if (m instanceof TreeMap) - return ((TreeMap)m).keyIterator(); + return ((TreeMap)m).keyIterator(); else - return (Iterator)(((TreeMap.NavigableSubMap)m).keyIterator()); + return ((TreeMap.NavigableSubMap)m).keyIterator(); } public Iterator descendingIterator() { if (m instanceof TreeMap) - return ((TreeMap)m).descendingKeyIterator(); + return ((TreeMap)m).descendingKeyIterator(); else - return (Iterator)(((TreeMap.NavigableSubMap)m).descendingKeyIterator()); + return ((TreeMap.NavigableSubMap)m).descendingKeyIterator(); } public int size() { return m.size(); } @@ -1052,11 +1055,11 @@ public class TreeMap public E last() { return m.lastKey(); } public Comparator comparator() { return m.comparator(); } public E pollFirst() { - Map.Entry e = m.pollFirstEntry(); + Map.Entry e = m.pollFirstEntry(); return (e == null) ? null : e.getKey(); } public E pollLast() { - Map.Entry e = m.pollLastEntry(); + Map.Entry e = m.pollLastEntry(); return (e == null) ? null : e.getKey(); } public boolean remove(Object o) { @@ -1085,7 +1088,7 @@ public class TreeMap return tailSet(fromElement, true); } public NavigableSet descendingSet() { - return new KeySet(m.descendingMap()); + return new KeySet<>(m.descendingMap()); } } @@ -1184,6 +1187,7 @@ public class TreeMap /** * Compares two keys using the correct comparison method for this TreeMap. */ + @SuppressWarnings("unchecked") final int compare(Object k1, Object k2) { return comparator==null ? ((Comparable)k1).compareTo((K)k2) : comparator.compare((K)k1, (K)k2); @@ -1488,7 +1492,7 @@ public class TreeMap public final NavigableSet navigableKeySet() { KeySet nksv = navigableKeySetView; return (nksv != null) ? nksv : - (navigableKeySetView = new TreeMap.KeySet(this)); + (navigableKeySetView = new TreeMap.KeySet<>(this)); } public final Set keySet() { @@ -1522,7 +1526,7 @@ public class TreeMap if (size == -1 || sizeModCount != m.modCount) { sizeModCount = m.modCount; size = 0; - Iterator i = iterator(); + Iterator i = iterator(); while (i.hasNext()) { size++; i.next(); @@ -1539,11 +1543,11 @@ public class TreeMap public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry) o; - K key = entry.getKey(); + Map.Entry entry = (Map.Entry) o; + Object key = entry.getKey(); if (!inRange(key)) return false; - TreeMap.Entry node = m.getEntry(key); + TreeMap.Entry node = m.getEntry(key); return node != null && valEquals(node.getValue(), entry.getValue()); } @@ -1551,8 +1555,8 @@ public class TreeMap public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry entry = (Map.Entry) o; - K key = entry.getKey(); + Map.Entry entry = (Map.Entry) o; + Object key = entry.getKey(); if (!inRange(key)) return false; TreeMap.Entry node = m.getEntry(key); @@ -1709,34 +1713,34 @@ public class TreeMap throw new IllegalArgumentException("fromKey out of range"); if (!inRange(toKey, toInclusive)) throw new IllegalArgumentException("toKey out of range"); - return new AscendingSubMap(m, - false, fromKey, fromInclusive, - false, toKey, toInclusive); + return new AscendingSubMap<>(m, + false, fromKey, fromInclusive, + false, toKey, toInclusive); } public NavigableMap headMap(K toKey, boolean inclusive) { if (!inRange(toKey, inclusive)) throw new IllegalArgumentException("toKey out of range"); - return new AscendingSubMap(m, - fromStart, lo, loInclusive, - false, toKey, inclusive); + return new AscendingSubMap<>(m, + fromStart, lo, loInclusive, + false, toKey, inclusive); } public NavigableMap tailMap(K fromKey, boolean inclusive) { if (!inRange(fromKey, inclusive)) throw new IllegalArgumentException("fromKey out of range"); - return new AscendingSubMap(m, - false, fromKey, inclusive, - toEnd, hi, hiInclusive); + return new AscendingSubMap<>(m, + false, fromKey, inclusive, + toEnd, hi, hiInclusive); } public NavigableMap descendingMap() { NavigableMap mv = descendingMapView; return (mv != null) ? mv : (descendingMapView = - new DescendingSubMap(m, - fromStart, lo, loInclusive, - toEnd, hi, hiInclusive)); + new DescendingSubMap<>(m, + fromStart, lo, loInclusive, + toEnd, hi, hiInclusive)); } Iterator keyIterator() { @@ -1790,34 +1794,34 @@ public class TreeMap throw new IllegalArgumentException("fromKey out of range"); if (!inRange(toKey, toInclusive)) throw new IllegalArgumentException("toKey out of range"); - return new DescendingSubMap(m, - false, toKey, toInclusive, - false, fromKey, fromInclusive); + return new DescendingSubMap<>(m, + false, toKey, toInclusive, + false, fromKey, fromInclusive); } public NavigableMap headMap(K toKey, boolean inclusive) { if (!inRange(toKey, inclusive)) throw new IllegalArgumentException("toKey out of range"); - return new DescendingSubMap(m, - false, toKey, inclusive, - toEnd, hi, hiInclusive); + return new DescendingSubMap<>(m, + false, toKey, inclusive, + toEnd, hi, hiInclusive); } public NavigableMap tailMap(K fromKey, boolean inclusive) { if (!inRange(fromKey, inclusive)) throw new IllegalArgumentException("fromKey out of range"); - return new DescendingSubMap(m, - fromStart, lo, loInclusive, - false, fromKey, inclusive); + return new DescendingSubMap<>(m, + fromStart, lo, loInclusive, + false, fromKey, inclusive); } public NavigableMap descendingMap() { NavigableMap mv = descendingMapView; return (mv != null) ? mv : (descendingMapView = - new AscendingSubMap(m, - fromStart, lo, loInclusive, - toEnd, hi, hiInclusive)); + new AscendingSubMap<>(m, + fromStart, lo, loInclusive, + toEnd, hi, hiInclusive)); } Iterator keyIterator() { @@ -1862,9 +1866,9 @@ public class TreeMap private boolean fromStart = false, toEnd = false; private K fromKey, toKey; private Object readResolve() { - return new AscendingSubMap(TreeMap.this, - fromStart, fromKey, true, - toEnd, toKey, false); + return new AscendingSubMap<>(TreeMap.this, + fromStart, fromKey, true, + toEnd, toKey, false); } public Set> entrySet() { throw new InternalError(); } public K lastKey() { throw new InternalError(); } @@ -2331,12 +2335,12 @@ public class TreeMap * @param defaultVal if non-null, this default value is used for * each value in the map. If null, each value is read from * iterator or stream, as described above. - * @throws IOException propagated from stream reads. This cannot + * @throws java.io.IOException propagated from stream reads. This cannot * occur if str is null. * @throws ClassNotFoundException propagated from readObject. * This cannot occur if str is null. */ - private void buildFromSorted(int size, Iterator it, + private void buildFromSorted(int size, Iterator it, java.io.ObjectInputStream str, V defaultVal) throws java.io.IOException, ClassNotFoundException { @@ -2359,9 +2363,10 @@ public class TreeMap * @param redLevel the level at which nodes should be red. * Must be equal to computeRedLevel for tree of this size. */ + @SuppressWarnings("unchecked") private final Entry buildFromSorted(int level, int lo, int hi, int redLevel, - Iterator it, + Iterator it, java.io.ObjectInputStream str, V defaultVal) throws java.io.IOException, ClassNotFoundException { @@ -2391,9 +2396,9 @@ public class TreeMap V value; if (it != null) { if (defaultVal==null) { - Map.Entry entry = (Map.Entry)it.next(); - key = entry.getKey(); - value = entry.getValue(); + Map.Entry entry = (Map.Entry)it.next(); + key = (K)entry.getKey(); + value = (V)entry.getValue(); } else { key = (K)it.next(); value = defaultVal; diff --git a/jdk/src/share/classes/java/util/TreeSet.java b/jdk/src/share/classes/java/util/TreeSet.java index 6b2a33d3b53..db71096da04 100644 --- a/jdk/src/share/classes/java/util/TreeSet.java +++ b/jdk/src/share/classes/java/util/TreeSet.java @@ -302,7 +302,7 @@ public class TreeSet extends AbstractSet m instanceof TreeMap) { SortedSet set = (SortedSet) c; TreeMap map = (TreeMap) m; - Comparator cc = (Comparator) set.comparator(); + Comparator cc = set.comparator(); Comparator mc = map.comparator(); if (cc==mc || (cc != null && cc.equals(mc))) { map.addAllForTreeSet(set, PRESENT); @@ -469,8 +469,9 @@ public class TreeSet extends AbstractSet * * @return a shallow copy of this set */ + @SuppressWarnings("unchecked") public Object clone() { - TreeSet clone = null; + TreeSet clone; try { clone = (TreeSet) super.clone(); } catch (CloneNotSupportedException e) { @@ -519,14 +520,11 @@ public class TreeSet extends AbstractSet s.defaultReadObject(); // Read in Comparator - Comparator c = (Comparator) s.readObject(); + @SuppressWarnings("unchecked") + Comparator c = (Comparator) s.readObject(); // Create backing TreeMap - TreeMap tm; - if (c==null) - tm = new TreeMap<>(); - else - tm = new TreeMap<>(c); + TreeMap tm = new TreeMap<>(c); m = tm; // Read in size diff --git a/jdk/src/share/classes/java/util/WeakHashMap.java b/jdk/src/share/classes/java/util/WeakHashMap.java index eb6152069c9..f5f62375e94 100644 --- a/jdk/src/share/classes/java/util/WeakHashMap.java +++ b/jdk/src/share/classes/java/util/WeakHashMap.java @@ -186,7 +186,7 @@ public class WeakHashMap @SuppressWarnings("unchecked") private Entry[] newTable(int n) { - return (Entry[]) new Entry[n]; + return (Entry[]) new Entry[n]; } /**