Decorate a List
using
PredicatedList
.
The following example demonstrates the use of
PredicatedList
to create a List
that only accepts even Integer
objects:
import java.util.*; import org.apache.commons.collections.list.PredicatedList; import org.apache.commons.collections.Predicate; import org.apache.commons.lang.ArrayUtils; // Create a Predicate that only accepts even Integer objects Predicate onlyEven = new Predicate( ) { public boolean evaluate(Object object) { Integer integer = (Integer) object; return( integer.intValue( ) % 2 == 0 ); } } List list = PredicatedList.decorate( new ArrayList( ), onlyEven ); list.add( new Integer(1) ); // Will throw IllegalArgumentException list.add( new Integer(2) ); list.add( new Integer(3) ); // Will throw IllegalArgumentException list.add( new Integer(4) );
In this example, attempting to add an Integer
with
an odd value causes an IllegalArgumentException
,
but adding an even number does not cause an exception to be thrown.
A PredicatedList
is very similar to a
PredicatedMap
; this decorator works with an
existing List
and adds inbound validation to a
List
. There is no limit to the complexity of the
Predicate
that can be used to provide inbound
validation to a List
.
PredicatedList
and
PredicatedMap
are not the only
Collection
decorators available in the Jakarta
Commons Collections. Any Collection
interface in
the following list can be decorated with a
Predicate
.
PredicatedBag
decorates a Bag
.
PredicatedBuffer
decorates a
Buffer
.
PredicatedCollection
decorates a
Collection
.
PredicatedList
decorates a List
.
PredicatedMap
decorates a Map
.
PredicatedSet
decorates a Set
.
PredicatedSortedBag
decorates a
SortedBag
.
PredicatedSortedMap
decorates a
SortedMap
.
PredicatedSortedSet
decorates a
SortedSet
For more information about these utilities, see the Jakarta Commons Collections project page at http://jakarta.apache.org/commons/collections.
3.149.236.27