org.apache.lucene.util

## Class AttributeImpl

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

- All Implemented Interfaces:
    Cloneable, Attribute
  Direct Known Subclasses:
    BoostAttributeImpl, BytesTermAttributeImpl, CharTermAttributeImpl, FlagsAttributeImpl, FuzzyTermsEnum.LevenshteinAutomataAttributeImpl, KeywordAttributeImpl, LegacyNumericTokenStream.LegacyNumericTermAttributeImpl, MaxNonCompetitiveBoostAttributeImpl, OffsetAttributeImpl, PayloadAttributeImpl, PositionIncrementAttributeImpl, PositionLengthAttributeImpl, TypeAttributeImpl

      public abstract class AttributeImpl
      extends Object
      implements Cloneable, 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`.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AttributeImpl()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `clear()` Clears the values in this AttributeImpl and resets it to its default value.
    `AttributeImpl` | `clone()` In most cases the clone is, and should be, deep in order to be able to properly capture the state of all attributes.
    `abstract void` | `copyTo(AttributeImpl target)` Copies the values from this Attribute into the passed-in target attribute.
    `void` | `end()` Clears the values in this AttributeImpl and resets it to its value at the end of the field.
    `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"`
    `abstract 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`.

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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.

    - #### end

          public void end()

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

      The default implementation simply calls `clear()`

    - #### 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)`

    - #### reflectWith

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

      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 AttributeImpl clone()

      In most cases the clone is, and should be, deep in order to be able to properly capture the state of all attributes.
      Overrides:
        `clone` in class `Object`

Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.