## org.apache.lucene.util
Class AttributeImpl

    java.lang.Object
      org.apache.lucene.util.AttributeImpl

All Implemented Interfaces:
  Serializable, Cloneable, Attribute

Direct Known Subclasses:
  AllowLeadingWildcardAttributeImpl, AnalyzerAttributeImpl, BaseFormAttributeImpl, BaseTokenStreamTestCase.CheckClearAttributesAttributeImpl, BoostAttributeImpl, CategoryAttributeImpl, CharTermAttributeImpl, DateResolutionAttributeImpl, DefaultOperatorAttributeImpl, DefaultPhraseSlopAttributeImpl, FieldBoostMapAttributeImpl, FieldDateResolutionMapAttributeImpl, FlagsAttributeImpl, FuzzyAttributeImpl, InflectionAttributeImpl, KeywordAttributeImpl, LocaleAttributeImpl, LowercaseExpandedTermsAttributeImpl, MultiFieldAttributeImpl, MultiTermRewriteMethodAttributeImpl, OffsetAttributeImpl, PartOfSpeechAttributeImpl, PayloadAttributeImpl, PositionIncrementAttributeImpl, PositionIncrementsAttributeImpl, PositionLengthAttributeImpl, RangeCollatorAttributeImpl, ReadingAttributeImpl, ScriptAttributeImpl, TypeAttributeImpl

    public abstract class AttributeImpl

extends Object
implements Cloneable, Serializable, Attribute

Base class for Attributes that can be added to a `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`.

See Also:
  Serialized Form

Field Summary
`protected boolean` `enableBackwards` Deprecated. this will be removed in Lucene 4.0.

Constructor Summary
`AttributeImpl()`

Method Summary
`abstract void` `clear()` Clears the values in this AttributeImpl and resets it to its default value.
`Object` `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`.
`String` `toString()` Returns a string representation of the object.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### enableBackwards

    @Deprecated
    protected boolean enableBackwards

  Deprecated. this will be removed in Lucene 4.0.
  When `true` (default), if a subclass overrides `toString()`, its output is parsed by `reflectWith(org.apache.lucene.util.AttributeReflector)` and used for attribute reflection. This is added to enable attribute implementations from Lucene 2.9 or 3.0 to work correctly with reflection.

Constructor Detail

### AttributeImpl

    public AttributeImpl()

Method Detail

### clear

    public abstract void clear()

  Clears the values in this AttributeImpl and resets it to its default value. If this implementation implements more than one Attribute interface it clears all.

### toString

    public String toString()

  Returns a string representation of the object. In general, the `toString` method returns a string that "textually represents" this object.

  WARNING: For backwards compatibility this method is implemented as `return reflectAsString(false)`. In Lucene 4.0 this default implementation will be removed. The reason for this is the problem of `CharTermAttributeImpl.toString()` that must return a string representation of the term's char sequence.

  It is recommeneded to use `reflectAsString(boolean)` or `reflectWith(org.apache.lucene.util.AttributeReflector)` to get a well-defined output of AttributeImpl's internals.

  Overrides:
    `toString` in class `Object`

### reflectAsString

    public final 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"`

  See Also:
    `reflectWith(AttributeReflector)`, `toString()`

### reflectWith

    public 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`.

  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!

  See Also:
    `reflectAsString(boolean)`

### copyTo

    public abstract void copyTo(AttributeImpl target)

  Copies the values from this Attribute into the passed-in target attribute. The target implementation must support all the Attributes this implementation supports.

### clone

    public Object clone()

  Shallow clone. Subclasses must override this if they need to clone any members deeply,

  Overrides:
    `clone` in class `Object`