Package com.sun.mirror.util
Class DeclarationFilter
- java.lang.Object
-
- com.sun.mirror.util.DeclarationFilter
-
public class DeclarationFilter extends Object
A filter for selecting just the items of interest from a collection of declarations. The filter is said to select or to match those declarations. Filters can be created in several ways: by the static methods described below, by negating or composing existing filters, or by subclasses that implement arbitrary matching rules.A subclass can create an arbitrary filter simply by implementing the
matches(Declaration)method.Examples.
Selecting the
publicdeclarations from a collection:
Selecting class declarations (including enums):result = FILTER_PUBLIC.filter(decls);
Selecting class declarations but excluding enums:classFilter = DeclarationFilter.getFilter(ClassDeclaration.class); result = classFilter.filter(decls);
Selecting declarations named "Bob":enumFilter = DeclarationFilter.getFilter(EnumDeclaration.class); compoundFilter = classFilter.and(enumFilter.not()); result = compoundFilter.filter(decls);nameFilter = new DeclarationFilter() { public boolean matches(Declaration d) { return d.getSimpleName().equals("Bob"); } }; result = nameFilter.filter(decls);- Since:
- 1.5
-
-
Field Summary
Fields Modifier and Type Field Description static DeclarationFilterFILTER_PACKAGEA filter that selects only package-private (default) declarations.static DeclarationFilterFILTER_PRIVATEA filter that selects onlyprivatedeclarations.static DeclarationFilterFILTER_PROTECTEDA filter that selects onlyprotecteddeclarations.static DeclarationFilterFILTER_PUBLICA filter that selects onlypublicdeclarations.static DeclarationFilterFILTER_PUBLIC_OR_PROTECTEDA filter that selects onlypublicorprotecteddeclarations.
-
Constructor Summary
Constructors Constructor Description DeclarationFilter()Constructs an identity filter: one that selects all declarations.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description DeclarationFilterand(DeclarationFilter f)Returns a filter that selects those declarations selected by both this filter and another.<D extends Declaration>
Collection<D>filter(Collection<? extends Declaration> decls, Class<D> resType)Returns the declarations matched by this filter, with the result being restricted to declarations of a given kind.<D extends Declaration>
Collection<D>filter(Collection<D> decls)Returns the declarations matched by this filter.static DeclarationFiltergetFilter(Class<? extends Declaration> kind)Returns a filter that selects declarations of a particular kind.static DeclarationFiltergetFilter(Collection<Modifier> mods)Returns a filter that selects declarations containing all of a collection of modifiers.booleanmatches(Declaration decl)Tests whether this filter matches a given declaration.DeclarationFilternot()Returns a filter that selects those declarations not selected by this filter.DeclarationFilteror(DeclarationFilter f)Returns a filter that selects those declarations selected by either this filter or another.
-
-
-
Field Detail
-
FILTER_PUBLIC
public static final DeclarationFilter FILTER_PUBLIC
A filter that selects onlypublicdeclarations.
-
FILTER_PROTECTED
public static final DeclarationFilter FILTER_PROTECTED
A filter that selects onlyprotecteddeclarations.
-
FILTER_PUBLIC_OR_PROTECTED
public static final DeclarationFilter FILTER_PUBLIC_OR_PROTECTED
A filter that selects onlypublicorprotecteddeclarations.
-
FILTER_PACKAGE
public static final DeclarationFilter FILTER_PACKAGE
A filter that selects only package-private (default) declarations.
-
FILTER_PRIVATE
public static final DeclarationFilter FILTER_PRIVATE
A filter that selects onlyprivatedeclarations.
-
-
Method Detail
-
getFilter
public static DeclarationFilter getFilter(Collection<Modifier> mods)
Returns a filter that selects declarations containing all of a collection of modifiers.- Parameters:
mods- the modifiers to match (non-null)- Returns:
- a filter that matches declarations containing
mods
-
getFilter
public static DeclarationFilter getFilter(Class<? extends Declaration> kind)
Returns a filter that selects declarations of a particular kind. For example, there may be a filter that selects only class declarations, or only fields. The filter will select declarations of the specified kind, and also any subtypes of that kind; for example, a field filter will also select enum constants.- Parameters:
kind- the kind of declarations to select- Returns:
- a filter that selects declarations of a particular kind
-
and
public DeclarationFilter and(DeclarationFilter f)
Returns a filter that selects those declarations selected by both this filter and another.- Parameters:
f- filter to be composed with this one- Returns:
- a filter that selects those declarations selected by both this filter and another
-
or
public DeclarationFilter or(DeclarationFilter f)
Returns a filter that selects those declarations selected by either this filter or another.- Parameters:
f- filter to be composed with this one- Returns:
- a filter that selects those declarations selected by either this filter or another
-
not
public DeclarationFilter not()
Returns a filter that selects those declarations not selected by this filter.- Returns:
- a filter that selects those declarations not selected by this filter
-
matches
public boolean matches(Declaration decl)
Tests whether this filter matches a given declaration. The default implementation always returnstrue; subclasses should override this.- Parameters:
decl- the declaration to match- Returns:
trueif this filter matches the given declaration
-
filter
public <D extends Declaration> Collection<D> filter(Collection<D> decls)
Returns the declarations matched by this filter. The result is a collection of the same type as the argument; the two-parameter version offilteroffers control over the result type.- Type Parameters:
D- type of the declarations being filtered- Parameters:
decls- declarations being filtered- Returns:
- the declarations matched by this filter
-
filter
public <D extends Declaration> Collection<D> filter(Collection<? extends Declaration> decls, Class<D> resType)
Returns the declarations matched by this filter, with the result being restricted to declarations of a given kind. Similar to the simpler single-parameter version offilter, but the result type is specified explicitly.- Type Parameters:
D- type of the declarations being returned- Parameters:
decls- declarations being filteredresType- type of the declarations being returned -- the reflective view ofD- Returns:
- the declarations matched by this filter, restricted to those of the specified type
-
-