org.springframework.core

## Interface AttributeAccessor

- All Known Subinterfaces:
    AnnotatedBeanDefinition, BeanDefinition, TestContext
  All Known Implementing Classes:
    AbstractBeanDefinition, AnnotatedGenericBeanDefinition, AttributeAccessorSupport, AutowireCandidateQualifier, BeanMetadataAttributeAccessor, ChildBeanDefinition, GenericBeanDefinition, PropertyValue, RootBeanDefinition, ScannedGenericBeanDefinition

      public interface AttributeAccessor

  Interface defining a generic contract for attaching and accessing metadata to/from arbitrary objects.
  Since:
    2.0
  Author:
    Rob Harrop

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `String[]` | `attributeNames()` Return the names of all attributes.
    `Object` | `getAttribute(String name)` Get the value of the attribute identified by `name`.
    `boolean` | `hasAttribute(String name)` Return `true` if the attribute identified by `name` exists.
    `Object` | `removeAttribute(String name)` Remove the attribute identified by `name` and return its value.
    `void` | `setAttribute(String name, Object value)` Set the attribute defined by `name` to the supplied `value`.

- - ### Method Detail

    - #### setAttribute

          void setAttribute(String name,
                            Object value)

      Set the attribute defined by `name` to the supplied `value`. If `value` is `null`, the attribute is `removed`.

      In general, users should take care to prevent overlaps with other metadata attributes by using fully-qualified names, perhaps using class or package names as prefix.

      Parameters:
        `name` - the unique attribute key
        `value` - the attribute value to be attached

    - #### getAttribute

          Object getAttribute(String name)

      Get the value of the attribute identified by `name`. Return `null` if the attribute doesn't exist.
      Parameters:
        `name` - the unique attribute key
      Returns:
        the current value of the attribute, if any

    - #### removeAttribute

          Object removeAttribute(String name)

      Remove the attribute identified by `name` and return its value. Return `null` if no attribute under `name` is found.
      Parameters:
        `name` - the unique attribute key
      Returns:
        the last value of the attribute, if any

    - #### hasAttribute

          boolean hasAttribute(String name)

      Return `true` if the attribute identified by `name` exists. Otherwise return `false`.
      Parameters:
        `name` - the unique attribute key

    - #### attributeNames

          String[] attributeNames()

      Return the names of all attributes.