# Annotation Interface BeanProperty

@Documented @Target(METHOD) @Retention(RUNTIME) public @interface BeanProperty
An annotation used to specify some property-related information for the automatically generated `BeanInfo` classes. This annotation is not used if the annotated class has a corresponding user-defined `BeanInfo` class, which does not imply the automatic analysis. If both the read and the write methods of the property are annotated, then the read method annotation will have more priority and replace the write method annotation.

Since:
  9
See Also:
  - `BeanInfo.getPropertyDescriptors()`

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `boolean`
  `bound`
  The value that indicates whether the annotated property can be a `bound` property or not.
  `String`
  `description`
  The `short description` for the `descriptor` of the annotated property.
  `String[]`
  `enumerationValues`
  The array of names for the public static fields that contains the valid values of the annotated property.
  `boolean`
  `expert`
  The value that indicates whether the annotated property is an `expert` property or not.
  `boolean`
  `hidden`
  The value that indicates whether the annotated property is a `hidden` property or not.
  `boolean`
  `preferred`
  The value that indicates whether the annotated property is a `preferred` property or not.
  `boolean`
  `required`
  The value that indicates whether the annotated property is a required property or not.
  `boolean`
  `visualUpdate`
  The value that indicates whether the corresponding component is repainted after the annotated property got changed or not.

- ## Element Details

  - ### bound

    boolean bound
    The value that indicates whether the annotated property can be a `bound` property or not. This value applies only to the beans that have the `propertyChange` event set.
    Returns:
      `true` if the annotated property can be a bound property; `false` otherwise.
    Default:
      `true`

  - ### expert

    boolean expert
    The value that indicates whether the annotated property is an `expert` property or not.
    Returns:
      `true` if the annotated property is an expert property; `false` otherwise.
    Default:
      `false`

  - ### hidden

    boolean hidden
    The value that indicates whether the annotated property is a `hidden` property or not.
    Returns:
      `true` if the annotated property is a hidden property; `false` otherwise.
    Default:
      `false`

  - ### preferred

    boolean preferred
    The value that indicates whether the annotated property is a `preferred` property or not.
    Returns:
      `true` if the annotated property is a preferred property; `false` otherwise.
    Default:
      `false`

  - ### required

    boolean required
    The value that indicates whether the annotated property is a required property or not.
    Returns:
      `true` if the annotated property is a required property; `false` otherwise.
    Default:
      `false`

  - ### visualUpdate

    boolean visualUpdate
    The value that indicates whether the corresponding component is repainted after the annotated property got changed or not.
    Returns:
      `true` if the corresponding component is repainted; `false` otherwise.
    Default:
      `false`

  - ### description

    String description
    The `short description` for the `descriptor` of the annotated property.
    Returns:
      the property description, or an empty string if the description is not set.
    Default:
      `""`

  - ### enumerationValues

    String[] enumerationValues
    The array of names for the public static fields that contains the valid values of the annotated property. These names are used to generate the `enumerationValues` `feature attribute` that must contain the following items per each property value: a displayable name for the property value, the actual property value, and a Java code piece used for the code generator.
    Returns:
      the names of the valid values of the annotated property, or an empty array if the names are not provided.
    Default:
      `{}`