Class Predicate<T>
- Type Parameters:
T
- type of object the predicate can evaluate in memory.
- Direct Known Subclasses:
AndPredicate
,ApprovalPredicate
,IndexedQuery
,NotPredicate
,OperatorPredicate
,OrPredicate
,Predicate.Any
Implementations should be immutable, such that the meaning of a predicate never changes once constructed. They should ensure their immutable promise by defensively copying any structures which might be modified externally, but was passed into the object's constructor.
However, implementations may retain non-thread-safe caches internally, to speed up
evaluation operations within the context of one thread's evaluation of the predicate. As a
result, callers should assume predicates are not thread-safe, but that two predicate graphs
produce the same results given the same inputs if they are equals(Object)
.
Predicates should support deep inspection whenever possible, so that generic algorithms can be
written to operate against them. Predicates which contain other predicates should override getChildren()
to return the list of children nested within the predicate.
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> Predicate<T>
Combine the passed predicates into a single AND node.static <T> Predicate<T>
and
(Collection<? extends Predicate<T>> that) Combine the passed predicates into a single AND node.static <T> Predicate<T>
any()
A predicate that matches any input, always, with no cost.copy
(Collection<? extends Predicate<T>> children) Create a copy of this predicate, with new children.abstract boolean
int
Returns a cost estimate to run this predicate, higher figures cost more.getChild
(int i) Same asgetChildren().get(i)
int
Same asgetChildren().size()
Get the children of this predicate, if any.Returns a list of this predicate and all its descendants.int
Get the number of leaf terms in this predicate.abstract int
hashCode()
boolean
isLeaf()
boolean
static <T> Predicate<T>
Invert the passed node.static <T> Predicate<T>
Combine the passed predicates into a single OR node.static <T> Predicate<T>
or
(Collection<? extends Predicate<T>> that) Combine the passed predicates into a single OR node.boolean
Whether this predicate can be used in search queries.
-
Constructor Details
-
Predicate
public Predicate()
-
-
Method Details
-
getPredicateString
-
isLeaf
public boolean isLeaf() -
any
A predicate that matches any input, always, with no cost. -
and
Combine the passed predicates into a single AND node. -
and
Combine the passed predicates into a single AND node. -
or
Combine the passed predicates into a single OR node. -
or
Combine the passed predicates into a single OR node. -
not
Invert the passed node. -
getChildren
Get the children of this predicate, if any. -
getChildCount
public int getChildCount()Same asgetChildren().size()
-
getChild
Same asgetChildren().get(i)
-
getLeafCount
public int getLeafCount()Get the number of leaf terms in this predicate. -
getFlattenedPredicateList
Returns a list of this predicate and all its descendants. -
copy
Create a copy of this predicate, with new children. -
isMatchable
public boolean isMatchable() -
supportedForQueries
public boolean supportedForQueries()Whether this predicate can be used in search queries. -
asMatchable
-
estimateCost
public int estimateCost()Returns a cost estimate to run this predicate, higher figures cost more. -
hashCode
public abstract int hashCode() -
equals
-