Package org.apache.commons.beanutils

# Interface DynaClass

All Known Subinterfaces:
  `MutableDynaClass`

All Known Implementing Classes:
  `BasicDynaClass`, `LazyDynaClass`, `LazyDynaMap`, `ResultSetDynaClass`, `RowSetDynaClass`, `WrapDynaClass`

public interface DynaClass

A DynaClass is a simulation of the functionality of `java.lang.Class` for classes implementing the `DynaBean` interface. DynaBean instances that share the same DynaClass all have the same set of available properties, along with any associated data types, read-only states, and write-only states.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DynaProperty[]`
  `getDynaProperties()`
  Return an array of `ProperyDescriptors` for the properties currently defined in this DynaClass.
  `DynaProperty`
  `getDynaProperty(String name)`
  Return a property descriptor for the specified property, if it exists; otherwise, return `null`.
  `String`
  `getName()`
  Return the name of this DynaClass (analogous to the `getName()` method of `java.lang.Class`), which allows the same `DynaClass` implementation class to support different dynamic classes, with different sets of properties.
  `DynaBean`
  `newInstance()`
  Instantiate and return a new DynaBean instance, associated with this DynaClass.

- ## Method Details

  - ### getDynaProperties

    DynaProperty[] getDynaProperties()

    Return an array of `ProperyDescriptors` for the properties currently defined in this DynaClass. If no properties are defined, a zero-length array will be returned.

    FIXME - Should we really be implementing `getBeanInfo()` instead, which returns property descriptors and a bunch of other stuff?

    Returns:
      the set of properties for this DynaClass

  - ### getDynaProperty

    DynaProperty getDynaProperty(String name)
    Return a property descriptor for the specified property, if it exists; otherwise, return `null`.
    Parameters:
      `name` - Name of the dynamic property for which a descriptor is requested
    Returns:
      The descriptor for the specified property
    Throws:
      `IllegalArgumentException` - if no property name is specified

  - ### getName

    String getName()
    Return the name of this DynaClass (analogous to the `getName()` method of `java.lang.Class`), which allows the same `DynaClass` implementation class to support different dynamic classes, with different sets of properties.
    Returns:
      the name of the DynaClass

  - ### newInstance

    DynaBean newInstance() throws IllegalAccessException, InstantiationException
    Instantiate and return a new DynaBean instance, associated with this DynaClass.
    Returns:
      A new `DynaBean` instance
    Throws:
      `IllegalAccessException` - if the Class or the appropriate constructor is not accessible
      `InstantiationException` - if this Class represents an abstract class, an array class, a primitive type, or void; or if instantiation fails for some other reason