# HG changeset patch # User chegar # Date 1389099572 0 # Node ID e9be73bceec1b7a1b4a06c2e95eb9931161b7118 # Parent a1ee9743f4ee165eae59389a020f2552f895dac8 8031142: AbstractCollection and AbstractList should specify their default implementation using @implSpec Reviewed-by: martin, psandoz diff -r a1ee9743f4ee -r e9be73bceec1 jdk/src/share/classes/java/util/AbstractCollection.java --- a/jdk/src/share/classes/java/util/AbstractCollection.java Wed Jul 05 19:25:40 2017 +0200 +++ b/jdk/src/share/classes/java/util/AbstractCollection.java Tue Jan 07 12:59:32 2014 +0000 @@ -80,7 +80,8 @@ /** * {@inheritDoc} * - *

This implementation returns size() == 0. + * @implSpec + * This implementation returns size() == 0. */ public boolean isEmpty() { return size() == 0; @@ -89,7 +90,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over the elements in the collection, + * @implSpec + * This implementation iterates over the elements in the collection, * checking each element in turn for equality with the specified element. * * @throws ClassCastException {@inheritDoc} @@ -112,7 +114,8 @@ /** * {@inheritDoc} * - *

This implementation returns an array containing all the elements + * @implSpec + * This implementation returns an array containing all the elements * returned by this collection's iterator, in the same order, stored in * consecutive elements of the array, starting with index {@code 0}. * The length of the returned array is equal to the number of elements @@ -146,7 +149,8 @@ /** * {@inheritDoc} * - *

This implementation returns an array containing all the elements + * @implSpec + * This implementation returns an array containing all the elements * returned by this collection's iterator in the same order, stored in * consecutive elements of the array, starting with index {@code 0}. * If the number of elements returned by the iterator is too large to @@ -249,7 +253,8 @@ /** * {@inheritDoc} * - *

This implementation always throws an + * @implSpec + * This implementation always throws an * UnsupportedOperationException. * * @throws UnsupportedOperationException {@inheritDoc} @@ -265,7 +270,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over the collection looking for the + * @implSpec + * This implementation iterates over the collection looking for the * specified element. If it finds the element, it removes the element * from the collection using the iterator's remove method. * @@ -304,7 +310,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over the specified collection, + * @implSpec + * This implementation iterates over the specified collection, * checking each element returned by the iterator in turn to see * if it's contained in this collection. If all elements are so * contained true is returned, otherwise false. @@ -323,7 +330,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over the specified collection, and adds + * @implSpec + * This implementation iterates over the specified collection, and adds * each object returned by the iterator to this collection, in turn. * *

Note that this implementation will throw an @@ -349,7 +357,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over this collection, checking each + * @implSpec + * This implementation iterates over this collection, checking each * element returned by the iterator in turn to see if it's contained * in the specified collection. If it's so contained, it's removed from * this collection with the iterator's remove method. @@ -383,7 +392,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over this collection, checking each + * @implSpec + * This implementation iterates over this collection, checking each * element returned by the iterator in turn to see if it's contained * in the specified collection. If it's not so contained, it's removed * from this collection with the iterator's remove method. @@ -417,7 +427,8 @@ /** * {@inheritDoc} * - *

This implementation iterates over this collection, removing each + * @implSpec + * This implementation iterates over this collection, removing each * element using the Iterator.remove operation. Most * implementations will probably choose to override this method for * efficiency. diff -r a1ee9743f4ee -r e9be73bceec1 jdk/src/share/classes/java/util/AbstractList.java --- a/jdk/src/share/classes/java/util/AbstractList.java Wed Jul 05 19:25:40 2017 +0200 +++ b/jdk/src/share/classes/java/util/AbstractList.java Tue Jan 07 12:59:32 2014 +0000 @@ -87,7 +87,8 @@ * classes should clearly specify in their documentation any restrictions * on what elements may be added. * - *

This implementation calls {@code add(size(), e)}. + * @implSpec + * This implementation calls {@code add(size(), e)}. * *

Note that this implementation throws an * {@code UnsupportedOperationException} unless @@ -119,7 +120,8 @@ /** * {@inheritDoc} * - *

This implementation always throws an + * @implSpec + * This implementation always throws an * {@code UnsupportedOperationException}. * * @throws UnsupportedOperationException {@inheritDoc} @@ -135,7 +137,8 @@ /** * {@inheritDoc} * - *

This implementation always throws an + * @implSpec + * This implementation always throws an * {@code UnsupportedOperationException}. * * @throws UnsupportedOperationException {@inheritDoc} @@ -151,7 +154,8 @@ /** * {@inheritDoc} * - *

This implementation always throws an + * @implSpec + * This implementation always throws an * {@code UnsupportedOperationException}. * * @throws UnsupportedOperationException {@inheritDoc} @@ -167,7 +171,8 @@ /** * {@inheritDoc} * - *

This implementation first gets a list iterator (with + * @implSpec + * This implementation first gets a list iterator (with * {@code listIterator()}). Then, it iterates over the list until the * specified element is found or the end of the list is reached. * @@ -191,7 +196,8 @@ /** * {@inheritDoc} * - *

This implementation first gets a list iterator that points to the end + * @implSpec + * This implementation first gets a list iterator that points to the end * of the list (with {@code listIterator(size())}). Then, it iterates * backwards over the list until the specified element is found, or the * beginning of the list is reached. @@ -220,7 +226,8 @@ * Removes all of the elements from this list (optional operation). * The list will be empty after this call returns. * - *

This implementation calls {@code removeRange(0, size())}. + * @implSpec + * This implementation calls {@code removeRange(0, size())}. * *

Note that this implementation throws an * {@code UnsupportedOperationException} unless {@code remove(int @@ -237,7 +244,8 @@ /** * {@inheritDoc} * - *

This implementation gets an iterator over the specified collection + * @implSpec + * This implementation gets an iterator over the specified collection * and iterates over it, inserting the elements obtained from the * iterator into this list at the appropriate position, one at a time, * using {@code add(int, E)}. @@ -269,7 +277,8 @@ /** * Returns an iterator over the elements in this list in proper sequence. * - *

This implementation returns a straightforward implementation of the + * @implSpec + * This implementation returns a straightforward implementation of the * iterator interface, relying on the backing list's {@code size()}, * {@code get(int)}, and {@code remove(int)} methods. * @@ -291,7 +300,8 @@ /** * {@inheritDoc} * - *

This implementation returns {@code listIterator(0)}. + * @implSpec + * This implementation returns {@code listIterator(0)}. * * @see #listIterator(int) */ @@ -302,7 +312,8 @@ /** * {@inheritDoc} * - *

This implementation returns a straightforward implementation of the + * @implSpec + * This implementation returns a straightforward implementation of the * {@code ListIterator} interface that extends the implementation of the * {@code Iterator} interface returned by the {@code iterator()} method. * The {@code ListIterator} implementation relies on the backing list's @@ -448,7 +459,8 @@ /** * {@inheritDoc} * - *

This implementation returns a list that subclasses + * @implSpec + * This implementation returns a list that subclasses * {@code AbstractList}. The subclass stores, in private fields, the * offset of the subList within the backing list, the size of the subList * (which can change over its lifetime), and the expected @@ -495,8 +507,9 @@ * the two lists are equal. (Two elements {@code e1} and * {@code e2} are equal if {@code (e1==null ? e2==null : * e1.equals(e2))}.) In other words, two lists are defined to be - * equal if they contain the same elements in the same order.

+ * equal if they contain the same elements in the same order. * + * @implSpec * This implementation first checks if the specified object is this * list. If so, it returns {@code true}; if not, it checks if the * specified object is a list. If not, it returns {@code false}; if so, @@ -529,7 +542,8 @@ /** * Returns the hash code value for this list. * - *

This implementation uses exactly the code that is used to define the + * @implSpec + * This implementation uses exactly the code that is used to define the * list hash function in the documentation for the {@link List#hashCode} * method. * @@ -555,7 +569,8 @@ * improve the performance of the {@code clear} operation on this list * and its subLists. * - *

This implementation gets a list iterator positioned before + * @implSpec + * This implementation gets a list iterator positioned before * {@code fromIndex}, and repeatedly calls {@code ListIterator.next} * followed by {@code ListIterator.remove} until the entire range has * been removed. Note: if {@code ListIterator.remove} requires linear