net.cscott.jutil

Class CollectionFactory<V>

public abstract class CollectionFactory<V> extends Object

CollectionFactory is a Collection generator. Subclasses should implement constructions of specific types of Collections.

Note that since some types of Collections have implicit constraints (such as Sets, which cannot contain more than one of the same element), code which uses the classes produced by CollectionFactorys must take care not to assume more than what is guaranteed by the Collection interface.

Note also that the current limitations on parametric types in Java mean that we can't easily type this class as CollectionFactory<C extends Collection<V>,V>, as CollectionFactory<Set<V>,V> is not a subtype of CollectionFactory<Collection<V>,V>, even though Set is a subtype of Collection.

Version: $Id: CollectionFactory.java,v 1.2 2004/01/13 20:47:05 cananian Exp $

Author: Felix S. Klock II

Constructor Summary
CollectionFactory()
Creates a CollectionFactory.
Method Summary
Collection<V>makeCollection()
Generates a new, mutable, empty Collection.
Collection<V>makeCollection(int initialCapacity)
Generates a new, mutable, empty Collection, using initialCapacity as a hint to use for the capacity for the produced Collection.
abstract Collection<V>makeCollection(Collection<? extends V> c)
Generates a new, mutable Collection, using the elements of c as a template for its initial contents.

Constructor Detail

CollectionFactory

public CollectionFactory()
Creates a CollectionFactory.

Method Detail

makeCollection

public Collection<V> makeCollection()
Generates a new, mutable, empty Collection.

makeCollection

public Collection<V> makeCollection(int initialCapacity)
Generates a new, mutable, empty Collection, using initialCapacity as a hint to use for the capacity for the produced Collection.

makeCollection

public abstract Collection<V> makeCollection(Collection<? extends V> c)
Generates a new, mutable Collection, using the elements of c as a template for its initial contents. Note that the Collection returned is not a view of c, but rather a snapshot; changes to c are not reflected in the returned Collection.
Copyright © 2003 C. Scott Ananian