# Class MBeanAttributeInfo

java.lang.Object
javax.management.MBeanFeatureInfo
javax.management.MBeanAttributeInfo

All Implemented Interfaces:
  `Serializable, Cloneable, DescriptorRead`

Direct Known Subclasses:
  `ModelMBeanAttributeInfo, OpenMBeanAttributeInfoSupport`

public class MBeanAttributeInfo extends MBeanFeatureInfo implements Cloneable
Describes an MBean attribute exposed for management. Instances of this class are immutable. Subclasses may be mutable but this is not recommended.

Since:
  1.5
See Also:
  - Serialized Form

- ## Field Summary

  ### Fields declared in class MBeanFeatureInfo

  `description, name`
  Modifier and Type
  Field
  Description
  `protected String`
  `description`
  The human-readable description of the feature.
  `protected String`
  `name`
  The name of the feature.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MBeanAttributeInfo(String name, String description, Method getter, Method setter)`
  This constructor takes the name of a simple attribute, and Method objects for reading and writing the attribute.
  `MBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs)`
  Constructs an `MBeanAttributeInfo` object.
  `MBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs, Descriptor descriptor)`
  Constructs an `MBeanAttributeInfo` object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Returns a shallow clone of this instance.
  `boolean`
  `equals(Object o)`
  Compare this MBeanAttributeInfo to another.
  `String`
  `getType()`
  Returns the class name of the attribute.
  `boolean`
  `isIs()`
  Indicates if this attribute has an "is" getter.
  `boolean`
  `isReadable()`
  Whether the value of the attribute can be read.
  `boolean`
  `isWritable()`
  Whether new values can be written to the attribute.

  ### Methods declared in class MBeanFeatureInfo

  `getDescription, getDescriptor, getName`
  Modifier and Type
  Method
  Description
  `String`
  `getDescription()`
  Returns the human-readable description of the feature.
  `Descriptor`
  `getDescriptor()`
  Returns the descriptor for the feature.
  `String`
  `getName()`
  Returns the name of the feature.

  ### Methods declared in class Object

  `finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### MBeanAttributeInfo

    public MBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs)
    Constructs an `MBeanAttributeInfo` object.
    Parameters:
      `name` - The name of the attribute.
      `type` - The type or class name of the attribute.
      `description` - A human readable description of the attribute.
      `isReadable` - True if the attribute has a getter method, false otherwise.
      `isWritable` - True if the attribute has a setter method, false otherwise.
      `isIs` - True if this attribute has an "is" getter, false otherwise.
    Throws:
      `IllegalArgumentException` - if `isIs` is true but `isReadable` is not, or if `isIs` is true and `type` is not `boolean` or `java.lang.Boolean`. (New code should always use `boolean` rather than `java.lang.Boolean`.)

  - ### MBeanAttributeInfo

    public MBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs, Descriptor descriptor)
    Constructs an `MBeanAttributeInfo` object.
    Parameters:
      `name` - The name of the attribute.
      `type` - The type or class name of the attribute.
      `description` - A human readable description of the attribute.
      `isReadable` - True if the attribute has a getter method, false otherwise.
      `isWritable` - True if the attribute has a setter method, false otherwise.
      `isIs` - True if this attribute has an "is" getter, false otherwise.
      `descriptor` - The descriptor for the attribute. This may be null which is equivalent to an empty descriptor.
    Throws:
      `IllegalArgumentException` - if `isIs` is true but `isReadable` is not, or if `isIs` is true and `type` is not `boolean` or `java.lang.Boolean`. (New code should always use `boolean` rather than `java.lang.Boolean`.)
    Since:
      1.6

  - ### MBeanAttributeInfo

    public MBeanAttributeInfo(String name, String description, Method getter, Method setter) throws IntrospectionException

    This constructor takes the name of a simple attribute, and Method objects for reading and writing the attribute. The `Descriptor` of the constructed object will include fields contributed by any annotations on the `Method` objects that contain the `DescriptorKey` meta-annotation.

    Parameters:
      `name` - The programmatic name of the attribute.
      `description` - A human readable description of the attribute.
      `getter` - The method used for reading the attribute value. May be null if the property is write-only.
      `setter` - The method used for writing the attribute value. May be null if the attribute is read-only.
    Throws:
      `IntrospectionException` - There is a consistency problem in the definition of this attribute.

- ## Method Details

  - ### clone

    public Object clone()

    Returns a shallow clone of this instance. The clone is obtained by simply calling `super.clone()`, thus calling the default native shallow cloning mechanism implemented by `Object.clone()`. No deeper cloning of any internal field is made.

    Since this class is immutable, cloning is chiefly of interest to subclasses.

    Overrides:
      `clone` in class `Object`
    Returns:
      a clone of this instance.
    See Also:
      - `Cloneable`

  - ### getType

    public String getType()
    Returns the class name of the attribute.
    Returns:
      the class name.

  - ### isReadable

    public boolean isReadable()
    Whether the value of the attribute can be read.
    Returns:
      True if the attribute can be read, false otherwise.

  - ### isWritable

    public boolean isWritable()
    Whether new values can be written to the attribute.
    Returns:
      True if the attribute can be written to, false otherwise.

  - ### isIs

    public boolean isIs()
    Indicates if this attribute has an "is" getter.
    Returns:
      true if this attribute has an "is" getter.

  - ### equals

    public boolean equals(Object o)
    Compare this MBeanAttributeInfo to another.
    Overrides:
      `equals` in class `MBeanFeatureInfo`
    Parameters:
      `o` - the object to compare to.
    Returns:
      true if and only if `o` is an MBeanAttributeInfo such that its `MBeanFeatureInfo.getName()`, `getType()`, `MBeanFeatureInfo.getDescription()`, `isReadable()`, `isWritable()`, and `isIs()` values are equal (not necessarily identical) to those of this MBeanAttributeInfo.
    See Also:
      - `Object.hashCode()`
      - `HashMap`