[COLLECTIONS-231] return specific type rather than base type in factory methods.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@1353132 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Thomas Neidhart 2012-06-23 14:33:48 +00:00
parent 36509cf59b
commit 902ee25dcf
10 changed files with 20 additions and 15 deletions

View File

@ -82,7 +82,7 @@ public class DefaultedMap<K, V> extends AbstractMapDecorator<K, V> implements Se
* @param defaultValue the default value to return when the key is not found * @param defaultValue the default value to return when the key is not found
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
*/ */
public static <K, V> Map<K, V> defaultedMap(Map<K, V> map, V defaultValue) { public static <K, V> DefaultedMap<K, V> defaultedMap(Map<K, V> map, V defaultValue) {
return new DefaultedMap<K, V>(map, ConstantTransformer.constantTransformer(defaultValue)); return new DefaultedMap<K, V>(map, ConstantTransformer.constantTransformer(defaultValue));
} }
@ -96,7 +96,7 @@ public class DefaultedMap<K, V> extends AbstractMapDecorator<K, V> implements Se
* @param factory the factory to use to create entries, must not be null * @param factory the factory to use to create entries, must not be null
* @throws IllegalArgumentException if map or factory is null * @throws IllegalArgumentException if map or factory is null
*/ */
public static <K, V> IterableMap<K, V> defaultedMap(Map<K, V> map, Factory<? extends V> factory) { public static <K, V> DefaultedMap<K, V> defaultedMap(Map<K, V> map, Factory<? extends V> factory) {
if (factory == null) { if (factory == null) {
throw new IllegalArgumentException("Factory must not be null"); throw new IllegalArgumentException("Factory must not be null");
} }

View File

@ -69,7 +69,7 @@ public class FixedSizeMap<K, V>
* @param map the map to decorate, must not be null * @param map the map to decorate, must not be null
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
*/ */
public static <K, V> IterableMap<K, V> fixedSizeMap(Map<K, V> map) { public static <K, V> FixedSizeMap<K, V> fixedSizeMap(Map<K, V> map) {
return new FixedSizeMap<K, V>(map); return new FixedSizeMap<K, V>(map);
} }

View File

@ -70,7 +70,7 @@ public class FixedSizeSortedMap<K, V>
* @param map the map to decorate, must not be null * @param map the map to decorate, must not be null
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
*/ */
public static <K, V> SortedMap<K, V> fixedSizeSortedMap(SortedMap<K, V> map) { public static <K, V> FixedSizeSortedMap<K, V> fixedSizeSortedMap(SortedMap<K, V> map) {
return new FixedSizeSortedMap<K, V>(map); return new FixedSizeSortedMap<K, V>(map);
} }

View File

@ -72,7 +72,7 @@ public class LazySortedMap<K,V>
* @param factory the factory to use, must not be null * @param factory the factory to use, must not be null
* @throws IllegalArgumentException if map or factory is null * @throws IllegalArgumentException if map or factory is null
*/ */
public static <K, V> SortedMap<K, V> lazySortedMap(SortedMap<K, V> map, Factory<? extends V> factory) { public static <K, V> LazySortedMap<K, V> lazySortedMap(SortedMap<K, V> map, Factory<? extends V> factory) {
return new LazySortedMap<K,V>(map, factory); return new LazySortedMap<K,V>(map, factory);
} }
@ -83,7 +83,8 @@ public class LazySortedMap<K,V>
* @param factory the factory to use, must not be null * @param factory the factory to use, must not be null
* @throws IllegalArgumentException if map or factory is null * @throws IllegalArgumentException if map or factory is null
*/ */
public static <K, V> SortedMap<K, V> lazySortedMap(SortedMap<K, V> map, Transformer<? super K, ? extends V> factory) { public static <K, V> LazySortedMap<K, V> lazySortedMap(SortedMap<K, V> map,
Transformer<? super K, ? extends V> factory) {
return new LazySortedMap<K,V>(map, factory); return new LazySortedMap<K,V>(map, factory);
} }

View File

@ -96,7 +96,7 @@ public class ListOrderedMap<K, V>
* @param map the map to decorate, must not be null * @param map the map to decorate, must not be null
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
*/ */
public static <K, V> OrderedMap<K, V> listOrderedMap(Map<K, V> map) { public static <K, V> ListOrderedMap<K, V> listOrderedMap(Map<K, V> map) {
return new ListOrderedMap<K, V>(map); return new ListOrderedMap<K, V>(map);
} }

View File

@ -95,7 +95,8 @@ public class MultiValueMap<K, V> extends AbstractMapDecorator<K, Object> impleme
* @param map the map to wrap * @param map the map to wrap
* @param collectionClass the type of the collection class * @param collectionClass the type of the collection class
*/ */
public static <K, V, C extends Collection<V>> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> map, Class<C> collectionClass) { public static <K, V, C extends Collection<V>> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> map,
Class<C> collectionClass) {
return new MultiValueMap<K, V>(map, new ReflectionFactory<C>(collectionClass)); return new MultiValueMap<K, V>(map, new ReflectionFactory<C>(collectionClass));
} }
@ -106,7 +107,8 @@ public class MultiValueMap<K, V> extends AbstractMapDecorator<K, Object> impleme
* @param map the map to decorate * @param map the map to decorate
* @param collectionFactory the collection factory (must return a Collection object). * @param collectionFactory the collection factory (must return a Collection object).
*/ */
public static <K, V, C extends Collection<V>> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> map, Factory<C> collectionFactory) { public static <K, V, C extends Collection<V>> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> map,
Factory<C> collectionFactory) {
return new MultiValueMap<K, V>(map, collectionFactory); return new MultiValueMap<K, V>(map, collectionFactory);
} }

View File

@ -75,7 +75,9 @@ public class PredicatedMap<K, V>
* @param valuePredicate the predicate to validate to values, null means no check * @param valuePredicate the predicate to validate to values, null means no check
* @throws IllegalArgumentException if the map is null * @throws IllegalArgumentException if the map is null
*/ */
public static <K, V> IterableMap<K, V> predicatedMap(Map<K, V> map, Predicate<? super K> keyPredicate, Predicate<? super V> valuePredicate) { public static <K, V> PredicatedMap<K, V> predicatedMap(Map<K, V> map,
Predicate<? super K> keyPredicate,
Predicate<? super V> valuePredicate) {
return new PredicatedMap<K, V>(map, keyPredicate, valuePredicate); return new PredicatedMap<K, V>(map, keyPredicate, valuePredicate);
} }

View File

@ -62,7 +62,7 @@ public class PredicatedSortedMap<K, V> extends PredicatedMap<K, V> implements So
* @param valuePredicate the predicate to validate to values, null means no check * @param valuePredicate the predicate to validate to values, null means no check
* @throws IllegalArgumentException if the map is null * @throws IllegalArgumentException if the map is null
*/ */
public static <K, V> SortedMap<K, V> predicatedSortedMap(SortedMap<K, V> map, public static <K, V> PredicatedSortedMap<K, V> predicatedSortedMap(SortedMap<K, V> map,
Predicate<? super K> keyPredicate, Predicate<? super V> valuePredicate) { Predicate<? super K> keyPredicate, Predicate<? super V> valuePredicate) {
return new PredicatedSortedMap<K, V>(map, keyPredicate, valuePredicate); return new PredicatedSortedMap<K, V>(map, keyPredicate, valuePredicate);
} }

View File

@ -72,7 +72,7 @@ public class TransformedMap<K, V>
* @param valueTransformer the transformer to use for value conversion, null means no transformation * @param valueTransformer the transformer to use for value conversion, null means no transformation
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
*/ */
public static <K, V> IterableMap<K, V> transformingMap(Map<K, V> map, public static <K, V> TransformedMap<K, V> transformingMap(Map<K, V> map,
Transformer<? super K, ? extends K> keyTransformer, Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) { Transformer<? super V, ? extends V> valueTransformer) {
return new TransformedMap<K, V>(map, keyTransformer, valueTransformer); return new TransformedMap<K, V>(map, keyTransformer, valueTransformer);
@ -92,7 +92,7 @@ public class TransformedMap<K, V>
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
* @since Commons Collections 3.2 * @since Commons Collections 3.2
*/ */
public static <K, V> Map<K, V> transformedMap(Map<K, V> map, public static <K, V> TransformedMap<K, V> transformedMap(Map<K, V> map,
Transformer<? super K, ? extends K> keyTransformer, Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) { Transformer<? super V, ? extends V> valueTransformer) {
TransformedMap<K, V> decorated = new TransformedMap<K, V>(map, keyTransformer, valueTransformer); TransformedMap<K, V> decorated = new TransformedMap<K, V>(map, keyTransformer, valueTransformer);

View File

@ -62,7 +62,7 @@ public class TransformedSortedMap<K, V>
* @param valueTransformer the predicate to validate to values, null means no transformation * @param valueTransformer the predicate to validate to values, null means no transformation
* @throws IllegalArgumentException if the map is null * @throws IllegalArgumentException if the map is null
*/ */
public static <K, V> SortedMap<K, V> transformingSortedMap(SortedMap<K, V> map, public static <K, V> TransformedSortedMap<K, V> transformingSortedMap(SortedMap<K, V> map,
Transformer<? super K, ? extends K> keyTransformer, Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) { Transformer<? super V, ? extends V> valueTransformer) {
return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer); return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
@ -82,7 +82,7 @@ public class TransformedSortedMap<K, V>
* @throws IllegalArgumentException if map is null * @throws IllegalArgumentException if map is null
* @since Commons Collections 3.2 * @since Commons Collections 3.2
*/ */
public static <K, V> SortedMap<K, V> transformedSortedMap(SortedMap<K, V> map, public static <K, V> TransformedSortedMap<K, V> transformedSortedMap(SortedMap<K, V> map,
Transformer<? super K, ? extends K> keyTransformer, Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) { Transformer<? super V, ? extends V> valueTransformer) {
TransformedSortedMap<K, V> decorated = new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer); TransformedSortedMap<K, V> decorated = new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);