Yep, that was the plan, but it was a trivial fix (in repo >= r412990). Just wondering how Mikhail/Stepan got it to build? It may be a consequence of different compiler versions again since I did not see a compiler error on the Eclipse compiler either.
Regards, Tim Geir Magnusson Jr wrote: > If it isn't really quick, roll it back and let Nathan fix it... > > geir > > Tim Ellison wrote: >> I see it too. >> >> Stepan / Mikhail, do you get build failures? Shouldn't we stop putting >> in new code until this is resolved? >> >> I am happy to take a look at the error, and if it is not a quick fix I >> think we can roll back Collections without trouble. >> >> Regards, >> Tim >> >> >> Geir Magnusson Jr wrote: >>> and the beer flowed.... >>> >>> Mark Hindess wrote: >>>> This breaks the build. I'm getting: >>>> >>>> compile: >>>> [javac] Compiling 1839 source files to >>>> /pbuilder/tmp/Harmony.clean/build >>>> [javac] >>>> /pbuilder/tmp/Harmony.clean/modules/luni/src/main/java/java/util/Collections.java:1074: >>>> name clash: add(java.lang.Object) in >>>> java.util.Collections.UnmodifiableCollection<java.util.Map.Entry<K,V>> and >>>> add(E) in java.util.Set<java.util.Map.Entry<K,V>> have the same erasure, >>>> yet neither overrides the other >>>> [javac] private static class UnmodifiableEntrySet<K, V> >>>> extends UnmodifiableSet<Map.Entry<K, V>> { >>>> [javac] ^ >>>> >>>> w/sun 1.5 javac on linux. >>>> >>>> Regards, >>>> Mark. >>>> >>>> On 9 June 2006 at 4:59, [EMAIL PROTECTED] wrote: >>>>> Author: ndbeyer >>>>> Date: Thu Jun 8 21:59:15 2006 >>>>> New Revision: 412928 >>>>> >>>>> URL: http://svn.apache.org/viewvc?rev=412928&view=rev >>>>> Log: >>>>> Generification of methods. >>>>> >>>>> Modified: >>>>> >>>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java >>>>> /util/Collections.java >>>>> >>>>> Modified: >>>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/jav >>>>> a/java/util/Collections.java >>>>> URL: >>>>> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/m >>>>> odules/luni/src/main/java/java/util/Collections.java?rev=412928&r1=412927&r2= >>>>> 412928&view=diff >>>>> ============================================================================= >>>>> = >>>>> --- >>>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java >>>>> /util/Collections.java (original) >>>>> +++ >>>>> incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java >>>>> /util/Collections.java Thu Jun 8 21:59:15 2006 >>>>> @@ -27,15 +27,15 @@ >>>>> */ >>>>> public class Collections { >>>>> >>>>> - private static final class CopiesList extends AbstractList implements >>>>> + private static final class CopiesList<E> extends AbstractList<E> implem >>>>> ents >>>>> Serializable { >>>>> private static final long serialVersionUID = 273909926839871180 >>>>> 0L; >>>>> >>>>> private final int n; >>>>> >>>>> - private final Object element; >>>>> + private final E element; >>>>> >>>>> - CopiesList(int length, Object object) { >>>>> + CopiesList(int length, E object) { >>>>> if (length < 0) { >>>>> throw new IllegalArgumentException(); >>>>> } >>>>> @@ -51,7 +51,7 @@ >>>>> return n; >>>>> } >>>>> >>>>> - public Object get(int location) { >>>>> + public E get(int location) { >>>>> if (0 <= location && location < n) >>>>> return element; >>>>> throw new IndexOutOfBoundsException(); >>>>> @@ -162,13 +162,13 @@ >>>>> } >>>>> } >>>>> >>>>> - private static final class SingletonSet extends AbstractSet implements >>>>> + private static final class SingletonSet<E> extends AbstractSet<E> imple >>>>> ments >>>>> Serializable { >>>>> private static final long serialVersionUID = 319368720755043167 >>>>> 9L; >>>>> >>>>> - final Object element; >>>>> + final E element; >>>>> >>>>> - SingletonSet(Object object) { >>>>> + SingletonSet(E object) { >>>>> element = object; >>>>> } >>>>> >>>>> @@ -180,15 +180,15 @@ >>>>> return 1; >>>>> } >>>>> >>>>> - public Iterator iterator() { >>>>> - return new Iterator() { >>>>> + public Iterator<E> iterator() { >>>>> + return new Iterator<E>() { >>>>> boolean hasNext = true; >>>>> >>>>> public boolean hasNext() { >>>>> return hasNext; >>>>> } >>>>> >>>>> - public Object next() { >>>>> + public E next() { >>>>> if (hasNext) { >>>>> hasNext = false; >>>>> return element; >>>>> @@ -203,13 +203,13 @@ >>>>> } >>>>> } >>>>> >>>>> - private static final class SingletonList extends AbstractList implement >>>>> s >>>>> + private static final class SingletonList<E> extends AbstractList<E> imp >>>>> lements >>>>> Serializable { >>>>> private static final long serialVersionUID = 309373661874065295 >>>>> 1L; >>>>> >>>>> - final Object element; >>>>> + final E element; >>>>> >>>>> - SingletonList(Object object) { >>>>> + SingletonList(E object) { >>>>> element = object; >>>>> } >>>>> >>>>> @@ -217,7 +217,7 @@ >>>>> return element == null ? object == null : element.equal >>>>> s(object); >>>>> } >>>>> >>>>> - public Object get(int location) { >>>>> + public E get(int location) { >>>>> if (location == 0) >>>>> return element; >>>>> throw new IndexOutOfBoundsException(); >>>>> @@ -228,13 +228,14 @@ >>>>> } >>>>> } >>>>> >>>>> - private static final class SingletonMap extends AbstractMap implements >>>>> + private static final class SingletonMap<K, V> extends AbstractMap<K, V> >>>>> implements >>>>> Serializable { >>>>> private static final long serialVersionUID = -69797244772150529 >>>>> 11L; >>>>> >>>>> - final Object k, v; >>>>> + final K k; >>>>> + final V v; >>>>> >>>>> - SingletonMap(Object key, Object value) { >>>>> + SingletonMap(K key, V value) { >>>>> k = key; >>>>> v = value; >>>>> } >>>>> @@ -247,7 +248,7 @@ >>>>> return v == null ? value == null : v.equals(value); >>>>> } >>>>> >>>>> - public Object get(Object key) { >>>>> + public V get(Object key) { >>>>> if (containsKey(key)) >>>>> return v; >>>>> return null; >>>>> @@ -257,11 +258,11 @@ >>>>> return 1; >>>>> } >>>>> >>>>> - public Set entrySet() { >>>>> - return new AbstractSet() { >>>>> + public Set<Map.Entry<K, V>> entrySet() { >>>>> + return new AbstractSet<Map.Entry<K, V>>() { >>>>> public boolean contains(Object object) { >>>>> if (object instanceof Map.Entry) { >>>>> - Map.Entry entry = (Map.Entry) o >>>>> bject; >>>>> + Map.Entry<?, ?> entry = (Map.En >>>>> try) object; >>>>> return containsKey(entry.getKey >>>>> ()) >>>>> && containsValu >>>>> e(entry.getValue()); >>>>> } >>>>> @@ -272,27 +273,27 @@ >>>>> return 1; >>>>> } >>>>> >>>>> - public Iterator iterator() { >>>>> - return new Iterator() { >>>>> + public Iterator<Map.Entry<K, V>> iterator() { >>>>> + return new Iterator<Map.Entry<K, V>>() >>>>> { >>>>> boolean hasNext = true; >>>>> >>>>> public boolean hasNext() { >>>>> return hasNext; >>>>> } >>>>> >>>>> - public Object next() { >>>>> + public Map.Entry<K, V> next() { >>>>> if (hasNext) { >>>>> hasNext = false >>>>> ; >>>>> - return new Map. >>>>> Entry() { >>>>> + return new Map. >>>>> Entry<K, V>() { >>>>> public >>>>> boolean equals(Object object) { >>>>> >>>>> return contains(object); >>>>> } >>>>> >>>>> - public >>>>> Object getKey() { >>>>> + public >>>>> K getKey() { >>>>> >>>>> return k; >>>>> } >>>>> >>>>> - public >>>>> Object getValue() { >>>>> + public >>>>> V getValue() { >>>>> >>>>> return v; >>>>> } >>>>> >>>>> @@ -301,7 +302,7 @@ >>>>> >>>>> ^ (v == null ? 0 : v.hashCode()); >>>>> } >>>>> >>>>> - public >>>>> Object setValue(Object value) { >>>>> + public >>>>> V setValue(V value) { >>>>> >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> }; >>>>> @@ -318,29 +319,29 @@ >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedCollection implements Collection, Serializable >>>>> { >>>>> + static class SynchronizedCollection<E> implements Collection<E>, Serial >>>>> izable { >>>>> private static final long serialVersionUID = 305399503209133509 >>>>> 3L; >>>>> >>>>> - final Collection c; >>>>> + final Collection<E> c; >>>>> final Object mutex; >>>>> >>>>> - SynchronizedCollection(Collection collection) { >>>>> + SynchronizedCollection(Collection<E> collection) { >>>>> c = collection; >>>>> mutex = this; >>>>> } >>>>> >>>>> - SynchronizedCollection(Collection collection, Object mutex) { >>>>> + SynchronizedCollection(Collection<E> collection, Object mutex) >>>>> { >>>>> c = collection; >>>>> this.mutex = mutex; >>>>> } >>>>> >>>>> - public boolean add(Object object) { >>>>> + public boolean add(E object) { >>>>> synchronized (mutex) { >>>>> return c.add(object); >>>>> } >>>>> } >>>>> >>>>> - public boolean addAll(Collection collection) { >>>>> + public boolean addAll(Collection<? extends E> collection) { >>>>> synchronized (mutex) { >>>>> return c.addAll(collection); >>>>> } >>>>> @@ -358,7 +359,7 @@ >>>>> } >>>>> } >>>>> >>>>> - public boolean containsAll(Collection collection) { >>>>> + public boolean containsAll(Collection<?> collection) { >>>>> synchronized (mutex) { >>>>> return c.containsAll(collection); >>>>> } >>>>> @@ -370,7 +371,7 @@ >>>>> } >>>>> } >>>>> >>>>> - public Iterator iterator() { >>>>> + public Iterator<E> iterator() { >>>>> synchronized (mutex) { >>>>> return c.iterator(); >>>>> } >>>>> @@ -382,13 +383,13 @@ >>>>> } >>>>> } >>>>> >>>>> - public boolean removeAll(Collection collection) { >>>>> + public boolean removeAll(Collection<?> collection) { >>>>> synchronized (mutex) { >>>>> return c.removeAll(collection); >>>>> } >>>>> } >>>>> >>>>> - public boolean retainAll(Collection collection) { >>>>> + public boolean retainAll(Collection<?> collection) { >>>>> synchronized (mutex) { >>>>> return c.retainAll(collection); >>>>> } >>>>> @@ -412,7 +413,7 @@ >>>>> } >>>>> } >>>>> >>>>> - public Object[] toArray(Object[] array) { >>>>> + public <T> T[] toArray(T[] array) { >>>>> synchronized (mutex) { >>>>> return c.toArray(array); >>>>> } >>>>> @@ -425,21 +426,21 @@ >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedRandomAccessList extends SynchronizedList >>>>> + static class SynchronizedRandomAccessList<E> extends SynchronizedList<E >>>>> implements RandomAccess { >>>>> private static final long serialVersionUID = 153067458360235848 >>>>> 2L; >>>>> >>>>> - SynchronizedRandomAccessList(List l) { >>>>> + SynchronizedRandomAccessList(List<E> l) { >>>>> super(l); >>>>> } >>>>> >>>>> - SynchronizedRandomAccessList(List l, Object mutex) { >>>>> + SynchronizedRandomAccessList(List<E> l, Object mutex) { >>>>> super(l, mutex); >>>>> } >>>>> >>>>> - public List subList(int start, int end) { >>>>> + public List<E> subList(int start, int end) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedRandomAccessList(list >>>>> + return new SynchronizedRandomAccessList<E>(list >>>>> .subList(start, end), mutex); >>>>> } >>>>> } >>>>> @@ -455,33 +456,33 @@ >>>>> * @see SynchronizedList#readResolve() >>>>> */ >>>>> private Object writeReplace() { >>>>> - return new SynchronizedList(list); >>>>> + return new SynchronizedList<E>(list); >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedList extends SynchronizedCollection implements >>>>> - List { >>>>> + static class SynchronizedList<E> extends SynchronizedCollection<E> impl >>>>> ements >>>>> + List<E> { >>>>> private static final long serialVersionUID = -77540903729629715 >>>>> 24L; >>>>> >>>>> - final List list; >>>>> + final List<E> list; >>>>> >>>>> - SynchronizedList(List l) { >>>>> + SynchronizedList(List<E> l) { >>>>> super(l); >>>>> list = l; >>>>> } >>>>> >>>>> - SynchronizedList(List l, Object mutex) { >>>>> + SynchronizedList(List<E> l, Object mutex) { >>>>> super(l, mutex); >>>>> list = l; >>>>> } >>>>> >>>>> - public void add(int location, Object object) { >>>>> + public void add(int location, E object) { >>>>> synchronized (mutex) { >>>>> list.add(location, object); >>>>> } >>>>> } >>>>> >>>>> - public boolean addAll(int location, Collection collection) { >>>>> + public boolean addAll(int location, Collection<? extends E> col >>>>> lection) { >>>>> synchronized (mutex) { >>>>> return list.addAll(location, collection); >>>>> } >>>>> @@ -493,7 +494,7 @@ >>>>> } >>>>> } >>>>> >>>>> - public Object get(int location) { >>>>> + public E get(int location) { >>>>> synchronized (mutex) { >>>>> return list.get(location); >>>>> } >>>>> @@ -517,33 +518,33 @@ >>>>> } >>>>> } >>>>> >>>>> - public ListIterator listIterator() { >>>>> + public ListIterator<E> listIterator() { >>>>> synchronized (mutex) { >>>>> return list.listIterator(); >>>>> } >>>>> } >>>>> >>>>> - public ListIterator listIterator(int location) { >>>>> + public ListIterator<E> listIterator(int location) { >>>>> synchronized (mutex) { >>>>> return list.listIterator(location); >>>>> } >>>>> } >>>>> >>>>> - public Object remove(int location) { >>>>> + public E remove(int location) { >>>>> synchronized (mutex) { >>>>> return list.remove(location); >>>>> } >>>>> } >>>>> >>>>> - public Object set(int location, Object object) { >>>>> + public E set(int location, E object) { >>>>> synchronized (mutex) { >>>>> return list.set(location, object); >>>>> } >>>>> } >>>>> >>>>> - public List subList(int start, int end) { >>>>> + public List<E> subList(int start, int end) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedList(list.subList(start, >>>>> end), mutex); >>>>> + return new SynchronizedList<E>(list.subList(sta >>>>> rt, end), mutex); >>>>> } >>>>> } >>>>> >>>>> @@ -569,24 +570,24 @@ >>>>> */ >>>>> private Object readResolve() { >>>>> if (list instanceof RandomAccess) >>>>> - return new SynchronizedRandomAccessList(list, m >>>>> utex); >>>>> + return new SynchronizedRandomAccessList<E>(list >>>>> , mutex); >>>>> else >>>>> return this; >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedMap implements Map, Serializable { >>>>> + static class SynchronizedMap<K, V> implements Map<K, V>, Serializable { >>>>> private static final long serialVersionUID = 197819847965902271 >>>>> 5L; >>>>> >>>>> - private final Map m; >>>>> + private final Map<K, V> m; >>>>> final Object mutex; >>>>> >>>>> - SynchronizedMap(Map map) { >>>>> + SynchronizedMap(Map<K, V> map) { >>>>> m = map; >>>>> mutex = this; >>>>> } >>>>> >>>>> - SynchronizedMap(Map map, Object mutex) { >>>>> + SynchronizedMap(Map<K, V> map, Object mutex) { >>>>> m = map; >>>>> this.mutex = mutex; >>>>> } >>>>> @@ -609,9 +610,9 @@ >>>>> } >>>>> } >>>>> >>>>> - public Set entrySet() { >>>>> + public Set<Map.Entry<K, V>> entrySet() { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSet(m.entrySet(), mutex) >>>>> ; >>>>> + return new SynchronizedSet<Map.Entry<K, V>>(m.e >>>>> ntrySet(), mutex); >>>>> } >>>>> } >>>>> >>>>> @@ -621,7 +622,7 @@ >>>>> } >>>>> } >>>>> >>>>> - public Object get(Object key) { >>>>> + public V get(Object key) { >>>>> synchronized (mutex) { >>>>> return m.get(key); >>>>> } >>>>> @@ -639,25 +640,25 @@ >>>>> } >>>>> } >>>>> >>>>> - public Set keySet() { >>>>> + public Set<K> keySet() { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSet(m.keySet(), mutex); >>>>> + return new SynchronizedSet<K>(m.keySet(), mutex >>>>> ); >>>>> } >>>>> } >>>>> >>>>> - public Object put(Object key, Object value) { >>>>> + public V put(K key, V value) { >>>>> synchronized (mutex) { >>>>> return m.put(key, value); >>>>> } >>>>> } >>>>> >>>>> - public void putAll(Map map) { >>>>> + public void putAll(Map<? extends K, ? extends V> map) { >>>>> synchronized (mutex) { >>>>> m.putAll(map); >>>>> } >>>>> } >>>>> >>>>> - public Object remove(Object key) { >>>>> + public V remove(Object key) { >>>>> synchronized (mutex) { >>>>> return m.remove(key); >>>>> } >>>>> @@ -669,9 +670,9 @@ >>>>> } >>>>> } >>>>> >>>>> - public Collection values() { >>>>> + public Collection<V> values() { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedCollection(m.values(), m >>>>> utex); >>>>> + return new SynchronizedCollection<V>(m.values() >>>>> , mutex); >>>>> } >>>>> } >>>>> >>>>> @@ -688,14 +689,14 @@ >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedSet extends SynchronizedCollection implements >>>>> Set { >>>>> + static class SynchronizedSet<E> extends SynchronizedCollection<E> imple >>>>> ments Set<E> { >>>>> private static final long serialVersionUID = 487447009682186044 >>>>> L; >>>>> >>>>> - SynchronizedSet(Set set) { >>>>> + SynchronizedSet(Set<E> set) { >>>>> super(set); >>>>> } >>>>> >>>>> - SynchronizedSet(Set set, Object mutex) { >>>>> + SynchronizedSet(Set<E> set, Object mutex) { >>>>> super(set, mutex); >>>>> } >>>>> >>>>> @@ -718,56 +719,56 @@ >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedSortedMap extends SynchronizedMap implements >>>>> - SortedMap { >>>>> + static class SynchronizedSortedMap<K, V> extends SynchronizedMap<K, V> >>>>> implements >>>>> + SortedMap<K, V> { >>>>> private static final long serialVersionUID = -87981467694164837 >>>>> 93L; >>>>> >>>>> - private final SortedMap sm; >>>>> + private final SortedMap<K, V> sm; >>>>> >>>>> - SynchronizedSortedMap(SortedMap map) { >>>>> + SynchronizedSortedMap(SortedMap<K, V> map) { >>>>> super(map); >>>>> sm = map; >>>>> } >>>>> >>>>> - SynchronizedSortedMap(SortedMap map, Object mutex) { >>>>> + SynchronizedSortedMap(SortedMap<K, V> map, Object mutex) { >>>>> super(map, mutex); >>>>> sm = map; >>>>> } >>>>> >>>>> - public Comparator comparator() { >>>>> + public Comparator<? super K> comparator() { >>>>> synchronized (mutex) { >>>>> return sm.comparator(); >>>>> } >>>>> } >>>>> >>>>> - public Object firstKey() { >>>>> + public K firstKey() { >>>>> synchronized (mutex) { >>>>> return sm.firstKey(); >>>>> } >>>>> } >>>>> >>>>> - public SortedMap headMap(Object endKey) { >>>>> + public SortedMap<K, V> headMap(K endKey) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedMap(sm.headMap(end >>>>> Key), mutex); >>>>> + return new SynchronizedSortedMap<K, V>(sm.headM >>>>> ap(endKey), mutex); >>>>> } >>>>> } >>>>> >>>>> - public Object lastKey() { >>>>> + public K lastKey() { >>>>> synchronized (mutex) { >>>>> return sm.lastKey(); >>>>> } >>>>> } >>>>> >>>>> - public SortedMap subMap(Object startKey, Object endKey) { >>>>> + public SortedMap<K, V> subMap(K startKey, K endKey) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedMap(sm.subMap(star >>>>> tKey, endKey), >>>>> + return new SynchronizedSortedMap<K, V>(sm.subMa >>>>> p(startKey, endKey), >>>>> mutex); >>>>> } >>>>> } >>>>> >>>>> - public SortedMap tailMap(Object startKey) { >>>>> + public SortedMap<K, V> tailMap(K startKey) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedMap(sm.tailMap(sta >>>>> rtKey), mutex); >>>>> + return new SynchronizedSortedMap<K, V>(sm.tailM >>>>> ap(startKey), mutex); >>>>> } >>>>> } >>>>> >>>>> @@ -778,55 +779,55 @@ >>>>> } >>>>> } >>>>> >>>>> - static class SynchronizedSortedSet extends SynchronizedSet implements >>>>> - SortedSet { >>>>> + static class SynchronizedSortedSet<E> extends SynchronizedSet<E> implem >>>>> ents >>>>> + SortedSet<E> { >>>>> private static final long serialVersionUID = 869580131086212740 >>>>> 6L; >>>>> >>>>> - private final SortedSet ss; >>>>> + private final SortedSet<E> ss; >>>>> >>>>> - SynchronizedSortedSet(SortedSet set) { >>>>> + SynchronizedSortedSet(SortedSet<E> set) { >>>>> super(set); >>>>> ss = set; >>>>> } >>>>> >>>>> - SynchronizedSortedSet(SortedSet set, Object mutex) { >>>>> + SynchronizedSortedSet(SortedSet<E> set, Object mutex) { >>>>> super(set, mutex); >>>>> ss = set; >>>>> } >>>>> >>>>> - public Comparator comparator() { >>>>> + public Comparator<? super E> comparator() { >>>>> synchronized (mutex) { >>>>> return ss.comparator(); >>>>> } >>>>> } >>>>> >>>>> - public Object first() { >>>>> + public E first() { >>>>> synchronized (mutex) { >>>>> return ss.first(); >>>>> } >>>>> } >>>>> >>>>> - public SortedSet headSet(Object end) { >>>>> + public SortedSet<E> headSet(E end) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedSet(ss.headSet(end >>>>> ), mutex); >>>>> + return new SynchronizedSortedSet<E>(ss.headSet( >>>>> end), mutex); >>>>> } >>>>> } >>>>> >>>>> - public Object last() { >>>>> + public E last() { >>>>> synchronized (mutex) { >>>>> return ss.last(); >>>>> } >>>>> } >>>>> >>>>> - public SortedSet subSet(Object start, Object end) { >>>>> + public SortedSet<E> subSet(E start, E end) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedSet(ss.subSet(star >>>>> t, end), mutex); >>>>> + return new SynchronizedSortedSet<E>(ss.subSet(s >>>>> tart, end), mutex); >>>>> } >>>>> } >>>>> >>>>> - public SortedSet tailSet(Object start) { >>>>> + public SortedSet<E> tailSet(E start) { >>>>> synchronized (mutex) { >>>>> - return new SynchronizedSortedSet(ss.tailSet(sta >>>>> rt), mutex); >>>>> + return new SynchronizedSortedSet<E>(ss.tailSet( >>>>> start), mutex); >>>>> } >>>>> } >>>>> >>>>> @@ -837,13 +838,13 @@ >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableCollection implements Collection, >>>>> + private static class UnmodifiableCollection<E> implements Collection<E> >>>>> , >>>>> Serializable { >>>>> private static final long serialVersionUID = 182001775257891407 >>>>> 8L; >>>>> >>>>> - final Collection c; >>>>> + final Collection<E> c; >>>>> >>>>> - UnmodifiableCollection(Collection collection) { >>>>> + UnmodifiableCollection(Collection<E> collection) { >>>>> c = collection; >>>>> } >>>>> >>>>> @@ -851,7 +852,7 @@ >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public boolean addAll(Collection collection) { >>>>> + public boolean addAll(Collection<? extends E> collection) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> @@ -863,7 +864,7 @@ >>>>> return c.contains(object); >>>>> } >>>>> >>>>> - public boolean containsAll(Collection collection) { >>>>> + public boolean containsAll(Collection<?> collection) { >>>>> return c.containsAll(collection); >>>>> } >>>>> >>>>> @@ -871,15 +872,15 @@ >>>>> return c.isEmpty(); >>>>> } >>>>> >>>>> - public Iterator iterator() { >>>>> - return new Iterator() { >>>>> - Iterator iterator = c.iterator(); >>>>> + public Iterator<E> iterator() { >>>>> + return new Iterator<E>() { >>>>> + Iterator<E> iterator = c.iterator(); >>>>> >>>>> public boolean hasNext() { >>>>> return iterator.hasNext(); >>>>> } >>>>> >>>>> - public Object next() { >>>>> + public E next() { >>>>> return iterator.next(); >>>>> } >>>>> >>>>> @@ -893,11 +894,11 @@ >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public boolean removeAll(Collection collection) { >>>>> + public boolean removeAll(Collection<?> collection) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public boolean retainAll(Collection collection) { >>>>> + public boolean retainAll(Collection<?> collection) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> @@ -905,11 +906,11 @@ >>>>> return c.size(); >>>>> } >>>>> >>>>> - public java.lang.Object[] toArray() { >>>>> + public Object[] toArray() { >>>>> return c.toArray(); >>>>> } >>>>> >>>>> - public Object[] toArray(Object[] array) { >>>>> + public <T> T[] toArray(T[] array) { >>>>> return c.toArray(array); >>>>> } >>>>> >>>>> @@ -918,16 +919,16 @@ >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableRandomAccessList extends UnmodifiableL >>>>> ist >>>>> + private static class UnmodifiableRandomAccessList<E> extends Unmodifiab >>>>> leList<E> >>>>> implements RandomAccess { >>>>> private static final long serialVersionUID = -25423088369663820 >>>>> 01L; >>>>> >>>>> - UnmodifiableRandomAccessList(List l) { >>>>> + UnmodifiableRandomAccessList(List<E> l) { >>>>> super(l); >>>>> } >>>>> >>>>> - public List subList(int start, int end) { >>>>> - return new UnmodifiableRandomAccessList(list.subList(st >>>>> art, end)); >>>>> + public List<E> subList(int start, int end) { >>>>> + return new UnmodifiableRandomAccessList<E>(list.subList >>>>> (start, end)); >>>>> } >>>>> >>>>> /** >>>>> @@ -941,26 +942,26 @@ >>>>> * @see UnmodifiableList#readResolve() >>>>> */ >>>>> private Object writeReplace() { >>>>> - return new UnmodifiableList(list); >>>>> + return new UnmodifiableList<E>(list); >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableList extends UnmodifiableCollection >>>>> - implements List { >>>>> + private static class UnmodifiableList<E> extends UnmodifiableCollection >>>>> <E> >>>>> + implements List<E> { >>>>> private static final long serialVersionUID = -28396735606524772 >>>>> 8L; >>>>> >>>>> - final List list; >>>>> + final List<E> list; >>>>> >>>>> - UnmodifiableList(List l) { >>>>> + UnmodifiableList(List<E> l) { >>>>> super(l); >>>>> list = l; >>>>> } >>>>> >>>>> - public void add(int location, Object object) { >>>>> + public void add(int location, E object) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public boolean addAll(int location, Collection collection) { >>>>> + public boolean addAll(int location, Collection<? extends E> col >>>>> lection) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> @@ -968,7 +969,7 @@ >>>>> return list.equals(object); >>>>> } >>>>> >>>>> - public Object get(int location) { >>>>> + public E get(int location) { >>>>> return list.get(location); >>>>> } >>>>> >>>>> @@ -984,15 +985,15 @@ >>>>> return list.lastIndexOf(object); >>>>> } >>>>> >>>>> - public ListIterator listIterator() { >>>>> + public ListIterator<E> listIterator() { >>>>> return listIterator(0); >>>>> } >>>>> >>>>> - public ListIterator listIterator(final int location) { >>>>> - return new ListIterator() { >>>>> - ListIterator iterator = list.listIterator(locat >>>>> ion); >>>>> + public ListIterator<E> listIterator(final int location) { >>>>> + return new ListIterator<E>() { >>>>> + ListIterator<E> iterator = list.listIterator(lo >>>>> cation); >>>>> >>>>> - public void add(Object object) { >>>>> + public void add(E object) { >>>>> throw new UnsupportedOperationException >>>>> (); >>>>> } >>>>> >>>>> @@ -1004,7 +1005,7 @@ >>>>> return iterator.hasPrevious(); >>>>> } >>>>> >>>>> - public Object next() { >>>>> + public E next() { >>>>> return iterator.next(); >>>>> } >>>>> >>>>> @@ -1012,7 +1013,7 @@ >>>>> return iterator.nextIndex(); >>>>> } >>>>> >>>>> - public Object previous() { >>>>> + public E previous() { >>>>> return iterator.previous(); >>>>> } >>>>> >>>>> @@ -1030,16 +1031,16 @@ >>>>> }; >>>>> } >>>>> >>>>> - public Object remove(int location) { >>>>> + public E remove(int location) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public Object set(int location, Object object) { >>>>> + public E set(int location, E object) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public List subList(int start, int end) { >>>>> - return new UnmodifiableList(list.subList(start, end)); >>>>> + public List<E> subList(int start, int end) { >>>>> + return new UnmodifiableList<E>(list.subList(start, end) >>>>> ); >>>>> } >>>>> >>>>> /** >>>>> @@ -1059,24 +1060,24 @@ >>>>> */ >>>>> private Object readResolve() { >>>>> if (list instanceof RandomAccess) >>>>> - return new UnmodifiableRandomAccessList(list); >>>>> + return new UnmodifiableRandomAccessList<E>(list >>>>> ); >>>>> else >>>>> return this; >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableMap implements Map, Serializable { >>>>> + private static class UnmodifiableMap<K, V> implements Map<K, V>, Serial >>>>> izable { >>>>> private static final long serialVersionUID = -10342347285742860 >>>>> 14L; >>>>> >>>>> - private final Map m; >>>>> + private final Map<K, V> m; >>>>> >>>>> - private static class UnmodifiableEntrySet extends UnmodifiableS >>>>> et { >>>>> + private static class UnmodifiableEntrySet<K, V> extends Unmodif >>>>> iableSet<Map.Entry<K, V>> { >>>>> private static final long serialVersionUID = 7854390611 >>>>> 657943733L; >>>>> >>>>> - private static class UnmodifiableMapEntry implements Ma >>>>> p.Entry { >>>>> - Map.Entry mapEntry; >>>>> + private static class UnmodifiableMapEntry<K, V> impleme >>>>> nts Map.Entry<K, V> { >>>>> + Map.Entry<K, V> mapEntry; >>>>> >>>>> - UnmodifiableMapEntry(Map.Entry entry) { >>>>> + UnmodifiableMapEntry(Map.Entry<K, V> entry) { >>>>> mapEntry = entry; >>>>> } >>>>> >>>>> @@ -1084,11 +1085,11 @@ >>>>> return mapEntry.equals(object); >>>>> } >>>>> >>>>> - public Object getKey() { >>>>> + public K getKey() { >>>>> return mapEntry.getKey(); >>>>> } >>>>> >>>>> - public Object getValue() { >>>>> + public V getValue() { >>>>> return mapEntry.getValue(); >>>>> } >>>>> >>>>> @@ -1096,7 +1097,7 @@ >>>>> return mapEntry.hashCode(); >>>>> } >>>>> >>>>> - public Object setValue(Object object) { >>>>> + public V setValue(V object) { >>>>> throw new UnsupportedOperationException >>>>> (); >>>>> } >>>>> >>>>> @@ -1105,21 +1106,20 @@ >>>>> } >>>>> } >>>>> >>>>> - UnmodifiableEntrySet(Set set) { >>>>> + UnmodifiableEntrySet(Set<Map.Entry<K, V>> set) { >>>>> super(set); >>>>> } >>>>> >>>>> - public Iterator iterator() { >>>>> - return new Iterator() { >>>>> - Iterator iterator = c.iterator(); >>>>> + public Iterator<Map.Entry<K, V>> iterator() { >>>>> + return new Iterator<Map.Entry<K, V>>() { >>>>> + Iterator<Map.Entry<K, V>> iterator = c. >>>>> iterator(); >>>>> >>>>> public boolean hasNext() { >>>>> return iterator.hasNext(); >>>>> } >>>>> >>>>> - public Object next() { >>>>> - return new UnmodifiableMapEntry >>>>> ((Map.Entry) iterator >>>>> - .next()); >>>>> + public Map.Entry<K, V> next() { >>>>> + return new UnmodifiableMapEntry >>>>> <K, V>(iterator.next()); >>>>> } >>>>> >>>>> public void remove() { >>>>> @@ -1131,27 +1131,30 @@ >>>>> public Object[] toArray() { >>>>> int length = c.size(); >>>>> Object[] result = new Object[length]; >>>>> - Iterator it = iterator(); >>>>> + Iterator<?> it = iterator(); >>>>> for (int i = length; --i >= 0;) >>>>> result[i] = it.next(); >>>>> return result; >>>>> } >>>>> >>>>> - public Object[] toArray(Object[] contents) { >>>>> + public <T> T[] toArray(T[] contents) { >>>>> int size = c.size(), index = 0; >>>>> - Iterator it = iterator(); >>>>> - if (size > contents.length) >>>>> - contents = (Object[]) Array.newInstance >>>>> (contents.getClass() >>>>> - .getComponentType(), si >>>>> ze); >>>>> - while (index < size) >>>>> - contents[index++] = it.next(); >>>>> - if (index < contents.length) >>>>> + Iterator<Map.Entry<K, V>> it = iterator(); >>>>> + if (size > contents.length) { >>>>> + Class<?> ct = contents.getClass().getComponentType(); >>>>> + contents = (T[])Array.newInstance(ct, s >>>>> ize); >>>>> + } >>>>> + while (index < size) { >>>>> + contents[index++] = (T)it.next(); >>>>> + } >>>>> + if (index < contents.length) { >>>>> contents[index] = null; >>>>> + } >>>>> return contents; >>>>> } >>>>> } >>>>> >>>>> - UnmodifiableMap(Map map) { >>>>> + UnmodifiableMap(Map<K, V> map) { >>>>> m = map; >>>>> } >>>>> >>>>> @@ -1167,15 +1170,15 @@ >>>>> return m.containsValue(value); >>>>> } >>>>> >>>>> - public Set entrySet() { >>>>> - return new UnmodifiableEntrySet(m.entrySet()); >>>>> + public Set<Map.Entry<K, V>> entrySet() { >>>>> + return new UnmodifiableEntrySet<K, V>(m.entrySet()); >>>>> } >>>>> >>>>> public boolean equals(Object object) { >>>>> return m.equals(object); >>>>> } >>>>> >>>>> - public Object get(Object key) { >>>>> + public V get(Object key) { >>>>> return m.get(key); >>>>> } >>>>> >>>>> @@ -1187,19 +1190,19 @@ >>>>> return m.isEmpty(); >>>>> } >>>>> >>>>> - public Set keySet() { >>>>> - return new UnmodifiableSet(m.keySet()); >>>>> + public Set<K> keySet() { >>>>> + return new UnmodifiableSet<K>(m.keySet()); >>>>> } >>>>> >>>>> - public Object put(Object key, Object value) { >>>>> + public V put(K key, V value) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public void putAll(Map map) { >>>>> + public void putAll(Map<? extends K, ? extends V> map) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> - public Object remove(Object key) { >>>>> + public V remove(Object key) { >>>>> throw new UnsupportedOperationException(); >>>>> } >>>>> >>>>> @@ -1207,20 +1210,20 @@ >>>>> return m.size(); >>>>> } >>>>> >>>>> - public Collection values() { >>>>> - return new UnmodifiableCollection(m.values()); >>>>> + public Collection<V> values() { >>>>> + return new UnmodifiableCollection<V>(m.values()); >>>>> } >>>>> >>>>> - public String toString() { >>>>> - return m.toString(); >>>>> - } >>>>> + public String toString() { >>>>> + return m.toString(); >>>>> + } >>>>> } >>>>> >>>>> - private static class UnmodifiableSet extends UnmodifiableCollection >>>>> - implements Set { >>>>> + private static class UnmodifiableSet<E> extends UnmodifiableCollection< >>>>> E> >>>>> + implements Set<E> { >>>>> private static final long serialVersionUID = -92150478337750138 >>>>> 03L; >>>>> >>>>> - UnmodifiableSet(Set set) { >>>>> + UnmodifiableSet(Set<E> set) { >>>>> super(set); >>>>> } >>>>> >>>>> @@ -1233,75 +1236,75 @@ >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableSortedMap extends UnmodifiableMap >>>>> - implements SortedMap { >>>>> + private static class UnmodifiableSortedMap<K, V> extends UnmodifiableMa >>>>> p<K, V> >>>>> + implements SortedMap<K, V> { >>>>> private static final long serialVersionUID = -88067438159967132 >>>>> 06L; >>>>> >>>>> - private final SortedMap sm; >>>>> + private final SortedMap<K, V> sm; >>>>> >>>>> - UnmodifiableSortedMap(SortedMap map) { >>>>> + UnmodifiableSortedMap(SortedMap<K, V> map) { >>>>> super(map); >>>>> sm = map; >>>>> } >>>>> >>>>> - public Comparator comparator() { >>>>> + public Comparator<? super K> comparator() { >>>>> return sm.comparator(); >>>>> } >>>>> >>>>> - public Object firstKey() { >>>>> + public K firstKey() { >>>>> return sm.firstKey(); >>>>> } >>>>> >>>>> - public SortedMap headMap(Object before) { >>>>> - return new UnmodifiableSortedMap(sm.headMap(before)); >>>>> + public SortedMap<K, V> headMap(K before) { >>>>> + return new UnmodifiableSortedMap<K, V>(sm.headMap(befor >>>>> e)); >>>>> } >>>>> >>>>> - public Object lastKey() { >>>>> + public K lastKey() { >>>>> return sm.lastKey(); >>>>> } >>>>> >>>>> - public SortedMap subMap(Object start, Object end) { >>>>> - return new UnmodifiableSortedMap(sm.subMap(start, end)) >>>>> ; >>>>> + public SortedMap<K, V> subMap(K start, K end) { >>>>> + return new UnmodifiableSortedMap<K, V>(sm.subMap(start, >>>>> end)); >>>>> } >>>>> >>>>> - public SortedMap tailMap(Object after) { >>>>> - return new UnmodifiableSortedMap(sm.tailMap(after)); >>>>> + public SortedMap<K, V> tailMap(K after) { >>>>> + return new UnmodifiableSortedMap<K, V>(sm.tailMap(after >>>>> )); >>>>> } >>>>> } >>>>> >>>>> - private static class UnmodifiableSortedSet extends UnmodifiableSet >>>>> - implements SortedSet { >>>>> + private static class UnmodifiableSortedSet<E> extends UnmodifiableSet<E >>>>> + implements SortedSet<E> { >>>>> private static final long serialVersionUID = -49291495915999111 >>>>> 65L; >>>>> >>>>> - private final SortedSet ss; >>>>> + private final SortedSet<E> ss; >>>>> >>>>> - UnmodifiableSortedSet(SortedSet set) { >>>>> + UnmodifiableSortedSet(SortedSet<E> set) { >>>>> super(set); >>>>> ss = set; >>>>> } >>>>> >>>>> - public Comparator comparator() { >>>>> + public Comparator<? super E> comparator() { >>>>> return ss.comparator(); >>>>> } >>>>> >>>>> - public Object first() { >>>>> + public E first() { >>>>> return ss.first(); >>>>> } >>>>> >>>>> - public SortedSet headSet(Object before) { >>>>> - return new UnmodifiableSortedSet(ss.headSet(before)); >>>>> + public SortedSet<E> headSet(E before) { >>>>> + return new UnmodifiableSortedSet<E>(ss.headSet(before)) >>>>> ; >>>>> } >>>>> >>>>> - public Object last() { >>>>> + public E last() { >>>>> return ss.last(); >>>>> } >>>>> >>>>> - public SortedSet subSet(Object start, Object end) { >>>>> - return new UnmodifiableSortedSet(ss.subSet(start, end)) >>>>> ; >>>>> + public SortedSet<E> subSet(E start, E end) { >>>>> + return new UnmodifiableSortedSet<E>(ss.subSet(start, en >>>>> d)); >>>>> } >>>>> >>>>> - public SortedSet tailSet(Object after) { >>>>> - return new UnmodifiableSortedSet(ss.tailSet(after)); >>>>> + public SortedSet<E> tailSet(E after) { >>>>> + return new UnmodifiableSortedSet<E>(ss.tailSet(after)); >>>>> } >>>>> } >>>>> >>>>> @@ -1327,7 +1330,7 @@ >>>>> public static <T> int binarySearch(List<? extends Comparable<? super T> >>>>>> list, T object) { >>>>> if (list == null) >>>>> throw new NullPointerException(); >>>>> - Comparable key = (Comparable) object; >>>>> + Comparable key = (Comparable)object; >>>>> if (!(list instanceof RandomAccess)) { >>>>> ListIterator it = list.listIterator(); >>>>> while (it.hasNext()) { >>>>> @@ -1414,12 +1417,12 @@ >>>>> * when replacing an element in the destination list is >>>>> not >>>>> * supported >>>>> */ >>>>> - public static void copy(List destination, List source) { >>>>> + public static <T> void copy(List<? super T> destination, List<? extends >>>>> T> source) { >>>>> if (destination.size() < source.size()) { >>>>> throw new ArrayIndexOutOfBoundsException(); >>>>> } >>>>> - Iterator srcIt = source.iterator(); >>>>> - ListIterator destIt = destination.listIterator(); >>>>> + Iterator<? extends T> srcIt = source.iterator(); >>>>> + ListIterator<? super T> destIt = destination.listIterator(); >>>>> while (srcIt.hasNext()) { >>>>> try { >>>>> destIt.next(); >>>>> @@ -1464,7 +1467,7 @@ >>>>> * when replacing an element in the List is not supporte >>>>> d >>>>> */ >>>>> public static <T> void fill(List<? super T> list, T object) { >>>>> - ListIterator it = list.listIterator(); >>>>> + ListIterator<? super T> it = list.listIterator(); >>>>> while (it.hasNext()) { >>>>> it.next(); >>>>> it.set(object); >>>>> @@ -1578,8 +1581,8 @@ >>>>> * @exception IllegalArgumentException >>>>> * when <code>length < 0</code> >>>>> */ >>>>> - public static List nCopies(final int length, Object object) { >>>>> - return new CopiesList(length, object); >>>>> + public static <T> List<T> nCopies(final int length, T object) { >>>>> + return new CopiesList<T>(length, object); >>>>> } >>>>> >>>>> /** >>>>> @@ -1592,7 +1595,7 @@ >>>>> * @exception UnsupportedOperationException >>>>> * when replacing an element in the List is not supporte >>>>> d >>>>> */ >>>>> - public static void reverse(List list) { >>>>> + public static void reverse(List<?> list) { >>>>> int size = list.size(); >>>>> ListIterator front = list.listIterator(); >>>>> ListIterator back = list.listIterator(size); >>>>> @@ -1615,7 +1618,7 @@ >>>>> * @see Comparable >>>>> * @see Serializable >>>>> */ >>>>> - public static Comparator reverseOrder() { >>>>> + public static <T> Comparator<T> reverseOrder() { >>>>> return new ReverseComparator(); >>>>> } >>>>> >>>>> @@ -1637,7 +1640,7 @@ >>>>> * @see Comparator >>>>> * @since 1.5 >>>>> */ >>>>> - public static Comparator reverseOrder(Comparator c) { >>>>> + public static <T> Comparator<T> reverseOrder(Comparator<T> c) { >>>>> if (c == null) >>>>> return reverseOrder(); >>>>> return new ReverseComparatorWithComparator(c); >>>>> @@ -1652,7 +1655,7 @@ >>>>> * @exception UnsupportedOperationException >>>>> * when replacing an element in the List is not supporte >>>>> d >>>>> */ >>>>> - public static void shuffle(List list) { >>>>> + public static void shuffle(List<?> list) { >>>>> shuffle(list, new Random()); >>>>> } >>>>> >>>>> @@ -1668,7 +1671,7 @@ >>>>> * @exception UnsupportedOperationException >>>>> * when replacing an element in the List is not supporte >>>>> d >>>>> */ >>>>> - public static void shuffle(List list, Random random) { >>>>> + public static void shuffle(List<?> list, Random random) { >>>>> if (!(list instanceof RandomAccess)) { >>>>> Object[] array = list.toArray(); >>>>> for (int i = array.length - 1; i > 0; i--) { >>>>> @@ -1687,11 +1690,12 @@ >>>>> it.set(array[i++]); >>>>> } >>>>> } else { >>>>> - for (int i = list.size() - 1; i > 0; i--) { >>>>> + List rawList = list; >>>>> + for (int i = rawList.size() - 1; i > 0; i--) { >>>>> int index = random.nextInt() % (i + 1); >>>>> if (index < 0) >>>>> index = -index; >>>>> - list.set(index, list.set(i, list.get(index))); >>>>> + rawList.set(index, rawList.set(i, rawList.get(i >>>>> ndex))); >>>>> } >>>>> } >>>>> } >>>>> @@ -1704,8 +1708,8 @@ >>>>> * the element >>>>> * @return a Set containing the element >>>>> */ >>>>> - public static Set singleton(Object object) { >>>>> - return new SingletonSet(object); >>>>> + public static <E> Set<E> singleton(E object) { >>>>> + return new SingletonSet<E>(object); >>>>> } >>>>> >>>>> /** >>>>> @@ -1716,8 +1720,8 @@ >>>>> * the element >>>>> * @return a List containing the element >>>>> */ >>>>> - public static List singletonList(Object object) { >>>>> - return new SingletonList(object); >>>>> + public static <E> List<E> singletonList(E object) { >>>>> + return new SingletonList<E>(object); >>>>> } >>>>> >>>>> /** >>>>> @@ -1730,8 +1734,8 @@ >>>>> * the value >>>>> * @return a Map containing the key and value >>>>> */ >>>>> - public static Map singletonMap(Object key, Object value) { >>>>> - return new SingletonMap(key, value); >>>>> + public static <K, V> Map<K, V> singletonMap(K key, V value) { >>>>> + return new SingletonMap<K, V>(key, value); >>>>> } >>>>> >>>>> /** >>>>> @@ -1744,14 +1748,14 @@ >>>>> * when an element in the List does not implement Compar >>>>> able >>>>> * or elements cannot be compared to each other >>>>> */ >>>>> - public static void sort(List list) { >>>>> + public static <T extends Comparable<? super T>> void sort(List<T> list) >>>>> { >>>>> Object[] array = list.toArray(); >>>>> Arrays.sort(array); >>>>> int i = 0; >>>>> - ListIterator it = list.listIterator(); >>>>> + ListIterator<T> it = list.listIterator(); >>>>> while (it.hasNext()) { >>>>> it.next(); >>>>> - it.set(array[i++]); >>>>> + it.set((T)array[i++]); >>>>> } >>>>> } >>>>> >>>>> @@ -1767,14 +1771,14 @@ >>>>> * when elements in the List cannot be compared to each >>>>> other >>>>> * using the Comparator >>>>> */ >>>>> - public static void sort(List list, Comparator comparator) { >>>>> + public static <T> void sort(List<T> list, Comparator<? super T> compara >>>>> tor) { >>>>> Object[] array = list.toArray(); >>>>> - Arrays.sort(array, comparator); >>>>> + Arrays.sort(array, (Comparator<Object>)comparator); >>>>> int i = 0; >>>>> - ListIterator it = list.listIterator(); >>>>> + ListIterator<T> it = list.listIterator(); >>>>> while (it.hasNext()) { >>>>> it.next(); >>>>> - it.set(array[i++]); >>>>> + it.set((T)array[i++]); >>>>> } >>>>> } >>>>> >>>>> @@ -1793,12 +1797,13 @@ >>>>> * @exception IndexOutOfBoundsException >>>>> * if index1 or index2 is out of range of this list >>>>> */ >>>>> - public static void swap(List list, int index1, int index2) { >>>>> + public static void swap(List<?> list, int index1, int index2) { >>>>> if (list == null) >>>>> throw new NullPointerException(); >>>>> if (index1 == index2) >>>>> return; >>>>> - list.set(index2, list.set(index1, list.get(index2))); >>>>> + List rawList = list; >>>>> + rawList.set(index2, rawList.set(index1, rawList.get(index2))); >>>>> } >>>>> >>>>> /** >>>>> @@ -1820,7 +1825,7 @@ >>>>> * @exception UnsupportedOperationException >>>>> * if the list does not support setting elements >>>>> */ >>>>> - public static boolean replaceAll(List list, Object obj, Object obj2) { >>>>> + public static <T> boolean replaceAll(List<T> list, T obj, T obj2) { >>>>> int index; >>>>> boolean found = false; >>>>> >>>>> @@ -1843,7 +1848,8 @@ >>>>> * It can be any integer: 0, positive, negative, larger than >>>>> the >>>>> * list size >>>>> */ >>>>> - public static void rotate(List list, int dist) { >>>>> + public static void rotate(List<?> lst, int dist) { >>>>> + List list = lst; >>>>> int size = list.size(); >>>>> >>>>> // Can't sensibly rotate an empty collection >>>>> @@ -1898,7 +1904,7 @@ >>>>> * @return the beginning index of the first occurrence of >>>>> * <code>sublist</code> in <code>list</code>, or -1 >>>>> */ >>>>> - public static int indexOfSubList(List list, List sublist) { >>>>> + public static int indexOfSubList(List<?> list, List<?> sublist) { >>>>> int size = list.size(); >>>>> int sublistSize = sublist.size(); >>>>> >>>>> @@ -1963,7 +1969,7 @@ >>>>> * @return the beginning index of the last occurrence of <code>sublist< >>>>> /code> >>>>> * in <code>list</code>, or -1 >>>>> */ >>>>> - public static int lastIndexOfSubList(List list, List sublist) { >>>>> + public static int lastIndexOfSubList(List<?> list, List<?> sublist) { >>>>> int sublistSize = sublist.size(); >>>>> int size = list.size(); >>>>> >>>>> @@ -2020,8 +2026,8 @@ >>>>> * Enumeration >>>>> * @return and ArrayList >>>>> */ >>>>> - public static ArrayList list(Enumeration enumeration) { >>>>> - ArrayList list = new ArrayList(); >>>>> + public static <T> ArrayList<T> list(Enumeration<T> enumeration) { >>>>> + ArrayList<T> list = new ArrayList<T>(); >>>>> while (enumeration.hasMoreElements()) { >>>>> list.add(enumeration.nextElement()); >>>>> } >>>>> @@ -2036,10 +2042,10 @@ >>>>> * the Collection >>>>> * @return a synchronized Collection >>>>> */ >>>>> - public static Collection synchronizedCollection(Collection collection) >>>>> { >>>>> + public static <T> Collection<T> synchronizedCollection(Collection<T> co >>>>> llection) { >>>>> if (collection == null) >>>>> throw new NullPointerException(); >>>>> - return new SynchronizedCollection(collection); >>>>> + return new SynchronizedCollection<T>(collection); >>>>> } >>>>> >>>>> /** >>>>> @@ -2050,13 +2056,13 @@ >>>>> * the List >>>>> * @return a synchronized List >>>>> */ >>>>> - public static List synchronizedList(List list) { >>>>> + public static <T> List<T> synchronizedList(List<T> list) { >>>>> if (list == null) >>>>> throw new NullPointerException(); >>>>> if (list instanceof RandomAccess) >>>>> - return new SynchronizedRandomAccessList(list); >>>>> + return new SynchronizedRandomAccessList<T>(list); >>>>> else >>>>> - return new SynchronizedList(list); >>>>> + return new SynchronizedList<T>(list); >>>>> } >>>>> >>>>> /** >>>>> @@ -2067,10 +2073,10 @@ >>>>> * the Map >>>>> * @return a synchronized Map >>>>> */ >>>>> - public static Map synchronizedMap(Map map) { >>>>> + public static <K, V> Map<K, V> synchronizedMap(Map<K, V> map) { >>>>> if (map == null) >>>>> throw new NullPointerException(); >>>>> - return new SynchronizedMap(map); >>>>> + return new SynchronizedMap<K, V>(map); >>>>> } >>>>> >>>>> /** >>>>> @@ -2081,10 +2087,10 @@ >>>>> * the Set >>>>> * @return a synchronized Set >>>>> */ >>>>> - public static Set synchronizedSet(Set set) { >>>>> + public static <E> Set<E> synchronizedSet(Set<E> set) { >>>>> if (set == null) >>>>> throw new NullPointerException(); >>>>> - return new SynchronizedSet(set); >>>>> + return new SynchronizedSet<E>(set); >>>>> } >>>>> >>>>> /** >>>>> @@ -2095,10 +2101,10 @@ >>>>> * the SortedMap >>>>> * @return a synchronized SortedMap >>>>> */ >>>>> - public static SortedMap synchronizedSortedMap(SortedMap map) { >>>>> + public static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, >>>>> V> map) { >>>>> if (map == null) >>>>> throw new NullPointerException(); >>>>> - return new SynchronizedSortedMap(map); >>>>> + return new SynchronizedSortedMap<K, V>(map); >>>>> } >>>>> >>>>> /** >>>>> @@ -2109,10 +2115,10 @@ >>>>> * the SortedSet >>>>> * @return a synchronized SortedSet >>>>> */ >>>>> - public static SortedSet synchronizedSortedSet(SortedSet set) { >>>>> + public static <E> SortedSet<E> synchronizedSortedSet(SortedSet<E> set) >>>>> { >>>>> if (set == null) >>>>> throw new NullPointerException(); >>>>> - return new SynchronizedSortedSet(set); >>>>> + return new SynchronizedSortedSet<E>(set); >>>>> } >>>>> >>>>> /** >>>>> @@ -2124,10 +2130,10 @@ >>>>> * the Collection >>>>> * @return an unmodifiable Collection >>>>> */ >>>>> - public static Collection unmodifiableCollection(Collection collection) >>>>> { >>>>> + public static <E> Collection<E> unmodifiableCollection(Collection<E> co >>>>> llection) { >>>>> if (collection == null) >>>>> throw new NullPointerException(); >>>>> - return new UnmodifiableCollection(collection); >>>>> + return new UnmodifiableCollection<E>(collection); >>>>> } >>>>> >>>>> /** >>>>> @@ -2139,13 +2145,13 @@ >>>>> * the List >>>>> * @return an unmodifiable List >>>>> */ >>>>> - public static List unmodifiableList(List list) { >>>>> + public static <E> List<E> unmodifiableList(List<E> list) { >>>>> if (list == null) >>>>> throw new NullPointerException(); >>>>> if (list instanceof RandomAccess) >>>>> - return new UnmodifiableRandomAccessList(list); >>>>> + return new UnmodifiableRandomAccessList<E>(list); >>>>> else >>>>> - return new UnmodifiableList(list); >>>>> + return new UnmodifiableList<E>(list); >>>>> } >>>>> >>>>> /** >>>>> @@ -2157,10 +2163,10 @@ >>>>> * the Map >>>>> * @return a unmodifiable Map >>>>> */ >>>>> - public static Map unmodifiableMap(Map map) { >>>>> + public static <K, V> Map<K, V> unmodifiableMap(Map<K, V> map) { >>>>> if (map == null) >>>>> throw new NullPointerException(); >>>>> - return new UnmodifiableMap(map); >>>>> + return new UnmodifiableMap<K, V>(map); >>>>> } >>>>> >>>>> /** >>>>> @@ -2172,10 +2178,10 @@ >>>>> * the Set >>>>> * @return a unmodifiable Set >>>>> */ >>>>> - public static Set unmodifiableSet(Set set) { >>>>> + public static <E> Set<E> unmodifiableSet(Set<E> set) { >>>>> if (set == null) >>>>> throw new NullPointerException(); >>>>> - return new UnmodifiableSet(set); >>>>> + return new UnmodifiableSet<E>(set); >>>>> } >>>>> >>>>> /** >>>>> @@ -2187,10 +2193,10 @@ >>>>> * the SortedMap >>>>> * @return a unmodifiable SortedMap >>>>> */ >>>>> - public static SortedMap unmodifiableSortedMap(SortedMap map) { >>>>> + public static <K, V> SortedMap<K, V> unmodifiableSortedMap(SortedMap<K, >>>>> V> map) { >>>>> if (map == null) >>>>> throw new NullPointerException(); >>>>> - return new UnmodifiableSortedMap(map); >>>>> + return new UnmodifiableSortedMap<K, V>(map); >>>>> } >>>>> >>>>> /** >>>>> @@ -2202,10 +2208,10 @@ >>>>> * the SortedSet >>>>> * @return a unmodifiable SortedSet >>>>> */ >>>>> - public static SortedSet unmodifiableSortedSet(SortedSet set) { >>>>> + public static <E> SortedSet<E> unmodifiableSortedSet(SortedSet<E> set) >>>>> { >>>>> if (set == null) >>>>> throw new NullPointerException(); >>>>> - return new UnmodifiableSortedSet(set); >>>>> + return new UnmodifiableSortedSet<E>(set); >>>>> } >>>>> >>>>> /** >>>>> @@ -2224,7 +2230,7 @@ >>>>> * >>>>> * @since 1.5 >>>>> */ >>>>> - public static int frequency(Collection c, Object o) { >>>>> + public static int frequency(Collection<?> c, Object o) { >>>>> if (c == null) >>>>> throw new NullPointerException(); >>>>> if (c.isEmpty()) >>>>> @@ -2277,7 +2283,7 @@ >>>>> * >>>>> * @return a typesafe collection >>>>> */ >>>>> - public static Collection checkedCollection(Collection c, Class type) >>>>> { >>>>> + public static <E> Collection<E> checkedCollection(Collection<E> c, >>>>> Class >>>>> <E> type) { >>>>> return new CheckedCollection(c, type); >>>>> } >>>>> >>>>> @@ -2289,7 +2295,7 @@ >>>>> * >>>>> * @return a typesafe map >>>>> */ >>>>> - public static Map checkedMap(Map m, Class keyType, Class valueType) { >>>>> + public static <K, V> Map<K,V> checkedMap(Map<K,V> m, Class<K> >>>>> keyType, C >>>>> lass<V> valueType) { >>>>> return new CheckedMap(m, keyType, valueType); >>>>> } >>>>> >>>>> @@ -2301,7 +2307,7 @@ >>>>> * >>>>> * @return a typesafe list >>>>> */ >>>>> - public static List checkedList(List list, Class type) { >>>>> + public static <E> List<E> checkedList(List<E> list, Class<E> type) { >>>>> if (list instanceof RandomAccess) { >>>>> return new CheckedRandomAccessList(list, type); >>>>> } else { >>>>> @@ -2317,7 +2323,7 @@ >>>>> * >>>>> * @return a typesafe set >>>>> */ >>>>> - public static Set checkedSet(Set s, Class type) { >>>>> + public static <E> Set<E> checkedSet(Set<E> s, Class<E> type) { >>>>> return new CheckedSet(s, type); >>>>> } >>>>> >>>>> @@ -2329,8 +2335,8 @@ >>>>> * >>>>> * @return a typesafe sorted map >>>>> */ >>>>> - public static SortedMap checkedSortedMap(SortedMap m, Class keyType, >>>>> - Class valueType) { >>>>> + public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> >>>>> m, Cl >>>>> ass<K> keyType, >>>>> + Class<V> valueType) { >>>>> return new CheckedSortedMap(m, keyType, valueType); >>>>> } >>>>> >>>>> @@ -2342,7 +2348,7 @@ >>>>> * >>>>> * @return a typesafe sorted set >>>>> */ >>>>> - public static SortedSet checkedSortedSet(SortedSet s, Class type) { >>>>> + public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, >>>>> Class<E> >>>>> type) { >>>>> return new CheckedSortedSet(s, type); >>>>> } >>>>> >>>>> @@ -2377,7 +2383,7 @@ >>>>> * >>>>> * @exception NullPointerException if one of the collections is null >>>>> */ >>>>> - public static boolean disjoint(Collection c1, Collection c2) { >>>>> + public static boolean disjoint(Collection<?> c1, Collection<?> c2) { >>>>> if ((c1 instanceof Set) && !(c2 instanceof Set) >>>>> || (c2.size()) > c1.size()) { >>>>> Collection tmp = c1; >>>>> >>>> --------------------------------------------------------------------- >>>> Terms of use : http://incubator.apache.org/harmony/mailing.html >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>> --------------------------------------------------------------------- >>> Terms of use : http://incubator.apache.org/harmony/mailing.html >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Tim Ellison ([EMAIL PROTECTED]) IBM Java technology centre, UK. --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]