public abstract class AttributeImpl extends Object implements Cloneable, Attribute
AttributeSource
.
Attributes are used to add data in a dynamic, yet type-safe way to a source
of usually streamed objects, e. g. a TokenStream
.
Constructor and Description |
---|
AttributeImpl() |
Modifier and Type | Method and Description |
---|---|
abstract void |
clear()
Clears the values in this AttributeImpl and resets it to its
default value.
|
AttributeImpl |
clone()
Shallow clone.
|
abstract void |
copyTo(AttributeImpl target)
Copies the values from this Attribute into the passed-in
target attribute.
|
String |
reflectAsString(boolean prependAttClass)
This method returns the current attribute values as a string in the following format
by calling the
reflectWith(AttributeReflector) method:
iff prependAttClass=true : "AttributeClass#key=value,AttributeClass#key=value"
iff prependAttClass=false : "key=value,key=value"
|
void |
reflectWith(AttributeReflector reflector)
This method is for introspection of attributes, it should simply
add the key/values this attribute holds to the given
AttributeReflector . |
public abstract void clear()
public final String reflectAsString(boolean prependAttClass)
reflectWith(AttributeReflector)
method:
prependAttClass=true
: "AttributeClass#key=value,AttributeClass#key=value"
prependAttClass=false
: "key=value,key=value"
reflectWith(AttributeReflector)
public void reflectWith(AttributeReflector reflector)
AttributeReflector
.
The default implementation calls AttributeReflector.reflect(java.lang.Class<? extends org.apache.lucene.util.Attribute>, java.lang.String, java.lang.Object)
for all
non-static fields from the implementing class, using the field name as key
and the field value as value. The Attribute class is also determined by reflection.
Please note that the default implementation can only handle single-Attribute
implementations.
Custom implementations look like this (e.g. for a combined attribute implementation):
public void reflectWith(AttributeReflector reflector) { reflector.reflect(CharTermAttribute.class, "term", term()); reflector.reflect(PositionIncrementAttribute.class, "positionIncrement", getPositionIncrement()); }
If you implement this method, make sure that for each invocation, the same set of Attribute
interfaces and keys are passed to AttributeReflector.reflect(java.lang.Class<? extends org.apache.lucene.util.Attribute>, java.lang.String, java.lang.Object)
in the same order, but possibly
different values. So don't automatically exclude e.g. null
properties!
reflectAsString(boolean)
public abstract void copyTo(AttributeImpl target)
public AttributeImpl clone()
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.